1月
02
会社でディレクトリが結構階層化されてる git リポジトリをいじってて、grep する時に Makefile.in とかが引っかかるのが邪魔だなぁ、と思いました。
たとえば .o を除外するだけなら grep --exclude='*.o'
とでもすればいいですが、同じ .c でもリポジトリにあるものだけ対象にして yacc/lex で .y/.l から自動生成したものは除外したい、とかなると途端に面倒になります。
で、リポジトリに入ってるファイルだけ grep するにはどうしたらいいかなーと思ってググったら、 git grep
というそのまんまなサブコマンドがありました。もちろん -E
オプションとかも使えます(git egrep
サブコマンドは無い模様)。注意点としてはデフォルトで grep -r
相当の動作になるので、ディレクトリを掘らないようにするには --max-depth
オプションで制御する必要があるぐらいでしょうか。
Mercurial にも hg grep
サブコマンドがあるようです(Mercurial 使ったことないけど)。あと Subversion には同様のものは無いようです、残念。
no comment untill now