ディレクトリ再帰 grep について

my fxg。

fxg() {
	if [ $# -eq 1 ]; then
		find . -type f -print0 | xargs -0 grep -nH $1
	elif [ $# -eq 2 ]; then
		find . -name "*.$2" -print0 | xargs -0 grep -nH $1
	elif [ $# -eq 3 ]; then
		find "$3" -name "*.$2" -print0 | xargs -0 grep -nH $1
	fi
}

find にマッチするファイルが1つしかないとき、どのファイルから見つかったのかわかるように -nHをつけている。

fxg "-i hOgE" py .

とできるようにあえて $1 には引用符をつけていない。
…とここまで作って思ったのだが、より一般性を求めるなら

grep hoge -R . --include="*.cpp" --include="*.h"

を直に打った方がいいかな。

$ grep asd -R .
./a:asdasda
./sub/b:asdasda
./sub/b.py:asdasda
./sub/b.rb:asdasda
./a.py:asdasda
$ grep asd -R .  --include="*.rb"
./sub/b.rb:asdasda
$ grep asd -R . --include="*.rb" --exclude="*.rb"
$ grep asd -R .  --exclude="*.rb" --include="*.rb"
$