find + grep は、複数の文字列を含むファイルを検索します。

find + grep は、複数の文字列を含むファイルを検索します。

私のコマンドラインに以下を送信します。

find /base/dir1 /base/dir2 -type f -exec /x/y/z/grep -e lolol -e wow {} +

これにより、指定された文字列(lololsum)の1つまたは両方を含むwow各ファイルが返されます。私が望むのは、2つの文字列(ORではなくAND)を含むファイルのみを返すことです。可能であればどうすればよいですか?

編集:検索された文字列は返されたすべてのファイルに表示される必要がありますが、必ず同じ行に表示される必要はありません。

編集2:-rまたは-Rオプションはありません。

ベストアンサー1

grepの代わりにGNU awkを使用することもできます。

find /base/dir1 /base/dir2 -type f -exec gawk '
    FNR == 1 {p1 = p2 = 0}
    /lolol/  {p1 = 1} 
    /wow/    {p2 = 1}
    p1 && p2 {print FILENAME; nextfile}
' {} +

おすすめ記事