如何在linux中包含多个字符串的目录中搜索文件

时间:2013-09-18 07:09:45

标签: linux grep

有一个包含多个文件的目录,我想grep包含字符串“str1”的文件说。为此,以下cmd完全正常:

 grep "str1" -r *

现在,我想要grep包含两个字符串str1str2的文件。任何人都可以让我知道如何做到这一点。

4 个答案:

答案 0 :(得分:3)

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

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

应该通过提供该列表作为输入到grep。

的文件名来完成工作

感谢this answer进一步了解如何做到这一点。

答案 1 :(得分:2)

以下内容对您有用:

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

这将返回包含str1str2的当前目录(和子目录)中的所有文件。

答案 2 :(得分:1)

另一种方法是将两次调用的排序结果连接到“grep -l”

join <(grep -l "str1" * | sort) <(grep -l "str2" * | sort)

答案 3 :(得分:0)

grep "str1" -r * | grep "str2"

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