特定のファイル拡張子に対して grep を再帰的に使用する方法

特定のファイル拡張子に対して 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"

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です