findコマンドを使用して、複数のパターンを含むいくつかのファイルを同時に検索したいと思います。
私は次のことを試しました:
find . -name "*.xml" -exec grep -iH keyword1 + && grep -iH "keyword2" {} \;
ただし、上記のコマンドは機能しません。
Bashで実装できますか?
ベストアンサー1
私が理解したのは、以下を含むリストをリストしたいと思います。両方「キーワード1」と「キーワード2」。これには、-exec
次の2つのテストを使用できます。
find . -name "*.xml" -exec grep -iq keyword1 {} \; -exec grep -iH keyword2 {} \;
grep
最初の項目がtrueを返すと、条件付きで2番目の項目が実行されます。このオプションは "keyword1"のみを含むすべてのファイルを一覧表示し、-q
最初の出力の出力をブロックします。grep
この-H
オプションはファイル名と一致する行を出力するため、これを使用することをお勧めします-l
。だから
find . -name "*.xml" -exec grep -iq keyword1 {} \; -exec grep -il keyword2 {} \;
これにより、Calebの提案に似た出力が生成されますが、追加されます-print
。