Linuxでgrepを使用してファイル名のみを表示する方法

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 {} ;

コメントを残す

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