再帰的にgrepするには?

すべてのディレクトリとサブディレクトリを再帰的に grep するにはどうすればいいですか?

find . | xargs grep "texthere" *
ソリューション
grep -r "texthere" .

1番目のパラメータは検索する正規表現を表し,2番目のパラメータは検索対象となるディレクトリを表します。ここでは,.はカレントディレクトリを意味します。

注意: これは GNU grep で動作します。Solaris のようないくつかのプラットフォームでは、レガシーな実装ではなく、GNU grep を特に使用する必要があります。 Solarisでは、これは ggrep コマンドです。

解説 (11)

必要なファイルの拡張子やパターンがわかっている場合は、--includeオプションを使うという方法もあります。

grep -r --include "*.txt" texthere .

また、--excludeで除外するファイルを指定することもできます。

Ag

コードを頻繁に検索する場合、Ag (The Silver Searcher) は grep よりもはるかに高速で、コードの検索用にカスタマイズされています。たとえば、デフォルトでは再帰的に動作し、.gitignore に記載されているファイルやディレクトリを自動的に無視するので、grep や find に面倒な exclude オプションを渡し続ける必要はありません。

解説 (7)

また

find ./ -type f -print0 | xargs -0 grep "foo"

となりますが、grep -rの方が良い答えです。

解説 (10)