別の文字列 "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
が向上する可能性があります。grep
find
grep