すべてのディレクトリとサブディレクトリを再帰的に grep するにはどうすればいいですか?
grep
find . | xargs grep "texthere" *
grep -r "texthere" .
1番目のパラメータは検索する正規表現を表し,2番目のパラメータは検索対象となるディレクトリを表します。ここでは,.はカレントディレクトリを意味します。
.
注意: これは GNU grep で動作します。Solaris のようないくつかのプラットフォームでは、レガシーな実装ではなく、GNU grep を特に使用する必要があります。 Solarisでは、これは ggrep コマンドです。
ggrep
必要なファイルの拡張子やパターンがわかっている場合は、--includeオプションを使うという方法もあります。
--include
grep -r --include "*.txt" texthere .
また、--excludeで除外するファイルを指定することもできます。
--exclude
コードを頻繁に検索する場合、Ag (The Silver Searcher) は grep よりもはるかに高速で、コードの検索用にカスタマイズされています。たとえば、デフォルトでは再帰的に動作し、.gitignore に記載されているファイルやディレクトリを自動的に無視するので、grep や find に面倒な exclude オプションを渡し続ける必要はありません。
.gitignore
また
find ./ -type f -print0 | xargs -0 grep "foo"
となりますが、grep -rの方が良い答えです。
grep -r
1番目のパラメータは検索する正規表現を表し,2番目のパラメータは検索対象となるディレクトリを表します。ここでは,
.
はカレントディレクトリを意味します。注意: これは GNU grep で動作します。Solaris のようないくつかのプラットフォームでは、レガシーな実装ではなく、GNU grep を特に使用する必要があります。 Solarisでは、これは
ggrep
コマンドです。必要なファイルの拡張子やパターンがわかっている場合は、
--include
オプションを使うという方法もあります。また、
--exclude
で除外するファイルを指定することもできます。Ag
コードを頻繁に検索する場合、Ag (The Silver Searcher) は grep よりもはるかに高速で、コードの検索用にカスタマイズされています。たとえば、デフォルトでは再帰的に動作し、
.gitignore
に記載されているファイルやディレクトリを自動的に無視するので、grep や find に面倒な exclude オプションを渡し続ける必要はありません。また
となりますが、
grep -r
の方が良い答えです。