我试图仅在包含另一个字符串“模式 2”的文件中搜索“模式 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
and grep -q
+ grep -l
:
find . -type f \
-exec grep -q "Pattern 1" {} \; \
-exec grep -l "Pattern 2" {} +
该xargs
选项可能性能更高,因为它将grep
一次调用多个文件,而 则会find
调用grep
每个文件。