gpt4 book ai didi

grep 或 ripgrep : How to find only files that match multiple patterns (not only on the same line)?

转载 作者:行者123 更新时间:2023-12-04 13:00:14 26 4
gpt4 key购买 nike

我正在寻找一种快速方法来查找包含 2 个或更多模式的文件夹中的所有文件
grep -l -e foo -e bar ./*或者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标志将启用 .也匹配换行符。由于您希望匹配跨越不同的行,因此您还需要在搜索词之间匹配换行符。

关于grep 或 ripgrep : How to find only files that match multiple patterns (not only on the same line)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59052703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com