有一个包含多个文件的目录,我想用 grep 查找包含字符串“str1”的文件。为此,以下 cmd 可以正常工作:
grep "str1" -r *
现在,我想对包含两个字符串的文件进行 grepstr1
和str2
. 谁能让我知道该怎么做。
grep "str1" -r -l *
将只打印匹配的文件的文件名列表
grep str2 `grep "str1" -r -l *`
应该通过将该列表作为文件名输入提供给 grep 来完成这项工作。
感谢这个答案,让我们重新了解如何做到这一点。
以下内容应该适合您:
find . -type f -exec sh -c "grep -q str1 {} && grep -q str2 {} && echo {}" \;
这将返回当前目录(和子目录)中同时包含str1
和的所有文件str2
。
另一种方法是加入两次调用“grep -l”的排序结果
join <(grep -l "str1" * | sort) <(grep -l "str2" * | sort)
grep "str1" -r * | grep "str2"
这将解决你的问题......你可以自己用谷歌搜索;)