grepで各ファイルを1回ずつリストする

grepで各ファイルを1回ずつリストする

ファイル内のテキストを検索していますが、ファイルの数が多すぎて、検索したテキストが 1 つのファイル内に複数回表示されます。各ファイルが 1 つだけリストされている、検索したテキストを含むファイルのリストを取得するにはどうすればよいでしょうか。

答え1

grep -l xyz file*

ここでxyzは検索パターン、file*は検索対象となるファイルのリストです。

答え2

grep -l LIST PATTERNが正しい方法です。あるいは、xargs同じことを行うために以下を使用することもできます:

xargs grep "My Search Pattern"  < input.txt 

xargsgrepパイプから渡される複数のファイル名に使用したい場合に特に便利です。たとえば、次のようになります。

find ~/Documents ~/bin -print0 | xargs -0 grep 'Search Term'

関連情報