Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 查找包含两个模式的所有文件_Bash_Grep - Fatal编程技术网

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

Bash 查找包含两个模式的所有文件,bash,grep,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 "*

我正在尝试查找包含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' {} \;

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

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

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

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


find~-type f-name\*.txt-exec grep-iq string1\{}-执行grep-iq string2\{}-打印

它们是否在同一行上?它们很可能不在同一行上,但在某些情况下是可能的。对所有您想要涵盖的情况进行最小的输入和输出将非常有用。