目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

それackでできるよ

grep -r hoge ./ | grep -v '\.git'

上記とかやると.gitディレクトリを除いてgrepをかけてくれるんですが、これを毎回書くのはめんどうなので、下記の1行を.zshrcや.bashrcに書いておくと良いでしょう。

GREP_OPTIONS="--exclude-dir=.git --directories=recurse"

そうすれば下記のコマンドで一番最初と同じ結果が得られます。

grep hoge ./

しかしながら、私は最近はgrepでなくackを多用しています。上記と同じコトをしたい場合、ackではもっと簡単にできます。

ack hoge

オプションなしで、再帰的に検索してくれます。また、デフォルトで.gitや.svnなど、普通は検索対象に入れて欲しくないであろうファイルは除外してくれます。便利ですね。
ただし、少し注意としては、ackが認識していない拡張子のファイルは検索対象に含まれないことです。一般的でない拡張子のファイルも検索対処に含めたい場合は、-aオプションを付けると良いでしょう。
いろいろオプションがあるので man ackしてみると良いです。

インストールに関しては、(cpanmがあるなら)cpanm App::Ackでインストールするのが良いと思います。ディストリビューションによってはack-grepという名でパッケージングされています。