特定のファイル拡張子に対して grep を再帰的に使用する方法
grep
は、文字列と正規表現パターンを照合できる優れた Linux ファイル検索および標準入力ツールです。ただし、検索するファイルを制御する必要がある場合がありgrep
、そのためにフラグが組み込まれています。
特定のファイルのみを grep 検索に含める
デフォルトでは、再帰 フラグgrep
を指定して呼び出すと、指定されたフォルダーとそのサブフォルダー内のすべてのファイルが検索されます。-r
これですべてがピックアップされますが、特定の拡張機能のみが必要な場合は、使用するオプションは次のとおりです。--include.
フラグは、特定のパターンに一致するファイルのみを含めるように--include
指定します。grep
指定すると、grep
有効なすべてのフラグがホワイトリストとして扱われます。これをワイルドカードなどの任意のLinux glob 文字と共に使用して、特定の拡張子を含むすべてに一致させることができます。
grep -inr --include \*.txt "foo"~/folder
\
ファイル名にアスタリスクが含まれる可能性があるため、これはスラッシュでエスケープされることに注意してください。--include
たとえば、wwwroot 内のすべての HTML、JS、および CSS ソース ファイルを検索するために、いくつかのフラグを指定することもできます。
grep -inr --include \*.html --include \*.css --include \*.js "foo"~/folder
同様に、グロブ以外に一致する特定のファイル名を除外して、既存の構成のブラックリストとして機能させることもできます。
grep -inr --exclude \*.txt "foo"~/folder
ディレクトリ全体を一度に除外するフラグもあります。
grep -inr --exclude-dir config "foo"~/folder
代わりに検索を使用する
find
または、ファイル検索ユーティリティを使用したい場合は、それをgrep
チャンネルとファイルに接続できますxargs
。 find
パターンと正規表現を使用して検索でき、サイズ、作成日と変更日、その他の Linux 識別子などのメタデータに基づいてファイルを簡単にフィルター処理できるなど、多くの利点があります。
-print0
このコマンドは、最後に使用しfind
て 1 行のリストを出力し、それxargs -0
を前後に渡す必要があるため、少しばかげていますgrep
。
find. / -type f -iname "*.txt"-print0 | xargs -0 grep "foo"
コメントを残す