#!/bin/sh # # Copyright (c) Linus Torvalds, 2005 # pattern= flags=() git_flags=() while : ; do case "$1" in --cached|--deleted|--others|--killed|\ --ignored|--exclude=*|\ --exclude-from=*|\--exclude-per-directory=*) git_flags=("${git_flags[@]}" "$1") ;; -e) pattern="$2" shift ;; -A|-B|-C|-D|-d|-f|-m) flags=("${flags[@]}" "$1" "$2") shift ;; --) # The rest are git-ls-files paths (or flags) shift break ;; -*) flags=("${flags[@]}" "$1") ;; *) if [ -z "$pattern" ]; then pattern="$1" shift fi break ;; esac shift done git-ls-files -z "${git_flags[@]}" "$@" | xargs -0 grep "${flags[@]}" "$pattern"