Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
grep或ripgrep:如何仅查找匹配多个模式的文件(而不仅仅是在同一行)?_Grep_Ripgrep - Fatal编程技术网

grep或ripgrep:如何仅查找匹配多个模式的文件(而不仅仅是在同一行)?

grep或ripgrep:如何仅查找匹配多个模式的文件(而不仅仅是在同一行)?,grep,ripgrep,Grep,Ripgrep,我正在寻找一种快速方法来查找文件夹中包含2个或更多模式的所有文件 grep-l-efoo-ebar./* 或 rg-l-e foo-e bar 在同一行中显示包含“foo”和“bar”的所有文件,或在不同行中显示包含“foo”或“bar”的所有文件,但我只希望在不同行中至少有一个“foo”匹配和一个“bar”匹配的文件。只有“foo”匹配或只有“bar”匹配的文件应被过滤掉 我知道我可以连接grep电话,但这太慢了 $ cat f1 afoot 2bar $ cat f2 foo bar $ c

我正在寻找一种快速方法来查找文件夹中包含2个或更多模式的所有文件

grep-l-efoo-ebar./*
rg-l-e foo-e bar

在同一行中显示包含“foo”和“bar”的所有文件,或在不同行中显示包含“foo”或“bar”的所有文件,但我只希望在不同行中至少有一个“foo”匹配和一个“bar”匹配的文件。只有“foo”匹配或只有“bar”匹配的文件应被过滤掉

我知道我可以连接grep电话,但这太慢了

$ cat f1
afoot
2bar
$ cat f2
foo bar
$ cat f3
foot
$ cat f4
bar
$ cat f5
barred
123
foo3

$ rg -Ul '(?s)foo.*?\n.*?bar|bar.*?\n.*?foo'
f5
f1
您可以使用
-U
选项跨行匹配。
s
标志将启用
以匹配换行符。由于您希望匹配跨越不同的行,因此还需要在搜索词之间匹配换行符