2017-01-09 62 views
1

我在查找包含2个特定字符串的所有文件。它需要匹配string1和string2。我到目前为止所尝试的:查找包含两种模式的所有文件

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

但是,这似乎找到了string1或string2。我怎样才能找到包含string1和string2的所有文件?

在这种特殊情况下,我试图找到包含两个字符串“sed的”和“山猫”

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

他们是在同一行? – Inian

+0

很可能它们不在同一条线上,但在某些情况下可能。 –

+0

您希望覆盖的所有案例的最小输入和输出将很有用。 – Inian

回答

2

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

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

1

使用grep如下同时匹配模式的所有文件。

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

通知的{} +应用grep comamnd上的所有文件在一拍,而不是调用多个进程。

相关问题