これを行うための既存の方法があるかどうか、または完全なスクリプトが必要かどうかを調べたいと思います。
一意のファイルに対して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ステートメントを使用したりできます。ループは再帰的ではないため、シェルワイルドカードを使用する必要があります。グローバルスターおそらく空のボール。実用的な事項探す私が知っている限り、より速く処理できます。もちろん、上記の回避策を使用するには、ファイルと同じディレクトリにある必要があります。