コンテンツが特定のパターンを含むファイル(ディレクトリまたはリスト)の名前を返します。

コンテンツが特定のパターンを含むファイル(ディレクトリまたはリスト)の名前を返します。

これを行うための既存の方法があるかどうか、または完全なスクリプトが必要かどうかを調べたいと思います。

一意のファイルに対してtrueまたはyesを返すスレッドのみが見つかりました。ファイルを印刷すると、grepファイル名に関する情報が削除されます。

答え1

@steeldriverが指摘したように、-lこのオプションはgrep最も短いソリューションです。

grep -l Pattern Directory出力に与えられたPattern

答え2

リストの場合はリストを読み取ることができ、ディレクトリの場合はファイルを繰り返すことができます。

while read -r file; do
  grep -q PATTERN "$file" && echo "$file contains PATTERN"
done < file.txt 

パターンとgrep呼び出しを追加したり、if文を使用したりできます。

for file in ./*; do
  grep -q PATTERN "$file" && echo "$file contains PATTERN"
done

ファイルに対してのみgrepにテストを追加したり、さらにgrepを追加したり、ループ内でifステートメントを使用したりできます。ループは再帰的ではないため、シェルワイルドカードを使用する必要があります。グローバルスターおそらく空のボール。実用的な事項探す私が知っている限り、より速く処理できます。もちろん、上記の回避策を使用するには、ファイルと同じディレクトリにある必要があります。

関連情報