「モード 1」を含むファイルでのみ Grep 「モード 2」を使用します。

「モード 1」を含むファイルでのみ Grep 「モード 2」を使用します。

別の文字列 "pattern 2"を含むファイルからのみ "pattern 1"を検索しようとしています。

例えば

A.txtモード1...モード2

B.txtモードZ...モード2

この例では、A.txtでパターン1に一致するファイルをフィルタリングし、A.txtでのみパターン2が表示されるかどうかを検索します。

以下で試しましたが、うまくいきません。

grep -rl "モード1"。 -exec grep -または「モード2」+

注:一部のファイルパスにはスペースが含まれています。

答え1

次にパイプすることができますxargs

grep -rlZ "Pattern 1" | xargs -0 grep -l "Pattern 2"

または以下を使用findしてgrep -q+ grep -l

find . -type f \
  -exec grep -q "Pattern 1" {} \; \
  -exec grep -l "Pattern 2" {} +

このオプションは、各ファイルを呼び出す代わりに複数のファイルを一度に呼び出すため、パフォーマンスxargsが向上する可能性があります。grepfindgrep

関連情報