どのファイルに特定の単語が含まれているかを確認するには、一部のファイルをgrepする必要があります。
grep -l word *
次に、このファイルのリストをgrepして、どのファイルに別の単語が含まれているかを確認する必要があります。最も簡単な方法はおそらくスクリプトを書くことですが、どうすればよいかわかりません。
答え1
すべてのファイル名にスペース、一重引用符、二重引用符、またはバックスラッシュ文字(または - で始まるGNU文字grep
)が含まれていないと仮定すると、次のことができます。
grep -l word * | xargs grep word2
Xargsは、最初のgrepの各ファイルに対して2番目のgrepを実行します。
GNU grep
/xargs
または互換性を使用すると、次の方法でより信頼性を高めることができます。
grep -lZ word ./* | xargs -r0 grep word2
Useは印刷ファイル名をNULで区切っている-Z
のでgrep
、一緒に使用できます。xargs -0
最初のオプションで何も見つからない場合は、2番目の-r
オプションを実行する必要はありません。xargs
grep
grep
答え2
答え3
特定の単語を含むファイルを見つけて、別の単語を含むファイルをフィルタリングする必要がある場合は、次の一連のコマンドを使用できます。
grep word * | awk -F ':' '{print $1}'|uniq | xargs grep word2
grep word *
- 「単語」を含むすべてのファイルが表示され、ファイル名がリストの最初に表示されます。awk -F ':' '{print $1}'
- 結果のファイル名のみを印刷します。uniq
- ファイル名を複数回印刷しないようにします。xargs grep word2
- 受信したファイルのリストから再検索します。