查找包含两种模式的所有文件

时间:2017-01-09 11:11:55

标签: bash grep

我试图查找包含2个特定字符串的所有文件。它需要匹配string1和string2。到目前为止我尝试过的事情:

find ~ -type f -name "*.txt" -exec grep -lie 'string1' -lie 'string2' {} \;

但这似乎找到了string1或string2。如何找到包含string1和string2的所有文件?

在这种特定情况下,我试图查找包含两个字符串的所有文档' sed'和' lynx'

find ~ -type f -name "*.txt" -exec grep -lie 'sed' -lie 'lynx' {} \;

2 个答案:

答案 0 :(得分:2)

即使字符串不在同一行,也会这样做:

find ~ -type f -name \*.txt -exec grep -iq string1 \{\} \; -exec grep -iq string2 \{\} \; -print

答案 1 :(得分:1)

使用下面的grep来匹配这两种模式。

find ~ -type f -name "*.txt" -exec grep -iE 'string1.*string2|string2.*string1' {} +

请注意{} +在一次性所有文件中应用grep comamnd,而不是调用多个进程。