有一个包含多个文件的目录,我想grep包含字符串“str1”的文件说。为此,以下cmd完全正常:
grep "str1" -r *
现在,我想要grep包含两个字符串str1
和str2
的文件。任何人都可以让我知道如何做到这一点。
答案 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 {}" \;
这将返回包含str1
和str2
的当前目录(和子目录)中的所有文件。
答案 2 :(得分:1)
另一种方法是将两次调用的排序结果连接到“grep -l”
join <(grep -l "str1" * | sort) <(grep -l "str2" * | sort)
答案 3 :(得分:0)
grep "str1" -r * | grep "str2"
这将解决你的问题...你可以用谷歌搜索自己;)