作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种快速方法来查找包含 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/
我是一名优秀的程序员,十分优秀!