Linuxでgrepを使用してファイル名のみを表示する方法
grep
テキストファイルを検索するためのLinuxユーティリティです。デフォルトでは検索結果を出力しますが、検索結果を含むファイル名を照合して印刷するためにも使用できます。これは、他のスクリプトにリンクするときに役立ちます。
grepを使用してファイル名を印刷する
grep
一般的なテキスト検索ユーティリティとして、bashスクリプトの他のコマンドと一緒に一般的に使用されます。ただし、デフォルトでは、ファイル名については何も出力されません。これは、出力を別のユーティリティにパイプする場合に必要になる可能性があります。
一致するファイルのリストが必要な場合は、一致の代わりにファイル名を表示grep
する-l
フラグを使用できます。
grep -l foo. /*
-H
これは、ファイル名とそれに続く一致する文字列を含む応答を出力するフラグに似ています。ただし、を使用すると-l
、ファイル名のみが出力され、検索文字列を含むファイルのリストが表示されます。
大文字のフラグを使用-L
して、逆のことを行うこともできます。一致する文字列を含まないすべてのファイルを印刷します。
grep -L baz. /*
ファイルパスのトリミング
デフォルト-l
では、フラグはファイルへの相対パスが付加されたファイルを印刷します。実際のファイル名だけが必要な場合は、basename
ユーティリティを使用してファイルパスを切り捨てることができます。これには、を介して入力を渡す必要がありますxargs
が、かなりうまく機能します。
grep -l foo. /* | xargs -L 1 basename
grep -r
検索は再帰的に行われることに注意してください。これをで使用すると 、basename
応答には、現在のパス自体にはない切り捨てられたパスを持つファイルが含まれる場合があります。
findコマンドでgrepを使用する
grep
コマンドのオプションの検索ユーティリティでもうまく機能しますfind
。たとえば、find
コマンドとともに使用して、ディレクトリ内のすべてのテキストファイルを検索し、grep
検索を簡単に実行できます。
find. -iname "*txt"-exec grep foo {} ;
または、-l
フラグとともに使用してファイル名を印刷します。
find. -iname "*txt"-exec grep -lH foo {} ;
コメントを残す