2

有一个包含多个文件的目录,我想用 grep 查找包含字符串“str1”的文件。为此,以下 cmd 可以正常工作:

 grep "str1" -r *

现在,我想对包含两个字符串的文件进行 grepstr1str2. 谁能让我知道该怎么做。

4

4 回答 4

3

grep "str1" -r -l *将只打印匹配的文件的文件名列表

grep str2 `grep "str1" -r -l *`

应该通过将该列表作为文件名输入提供给 grep 来完成这项工作。

感谢这个答案,让我们重新了解如何做到这一点。

于 2013-09-18T07:32:56.523 回答
2

以下内容应该适合您:

find . -type f -exec sh -c "grep -q str1 {} && grep -q str2 {} && echo {}" \;

这将返回当前目录(和子目录)中同时包含str1和的所有文件str2

于 2013-09-18T07:33:06.790 回答
1

另一种方法是加入两次调用“grep -l”的排序结果

join <(grep -l "str1" * | sort) <(grep -l "str2" * | sort)
于 2013-09-18T10:54:02.790 回答
0
grep "str1" -r * | grep "str2"

这将解决你的问题......你可以自己用谷歌搜索;)

于 2013-09-18T07:13:49.760 回答