grep或ripgrep:如何仅查找匹配多个模式的文件(而不仅仅是在同一行)?
我正在寻找一种快速方法来查找文件夹中包含2个或更多模式的所有文件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
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
标志将启用
以匹配换行符。由于您希望匹配跨越不同的行,因此还需要在搜索词之间匹配换行符