我想ripgrep搜索指定的图样路径。例如
rg PATTERN --path REGEX
Run Code Online (Sandbox Code Playgroud)
其中pattern是到grep图案和正则表达式是路径匹配图案。
我已经分散了文档,我不确定这个功能是否已经加入。
使用该-g/--glob
标志,如指南中所述。它使用通配符而不是正则表达式,但在实践中完成了同样的事情。例如:
rg PM_RESUME -g '*.h'
Run Code Online (Sandbox Code Playgroud)
PM_RESUME
在我的 Linux 内核检出中,仅在 C 头文件中找到了 。
ripgrep 无法使用正则表达式来匹配文件路径。相反,如果您绝对需要使用正则表达式,则应该使用 xargs:
rg --files -0 | rg '.*\.h$' --null-data | xargs -0 rg PM_RESUME
Run Code Online (Sandbox Code Playgroud)
分解它:
rg --files -0
在标准输出上打印它将搜索的所有文件,以NUL
.rg '.*\.h$' --null-data
只匹配文件列表中以.h
. --null-data
确保我们保留我们的NUL
字节。xargs -0 rg PM_RESUME
拆分NUL
分隔的参数,并将它们交给 ripgrep,它与匹配初始正则表达式的文件列表精确对应。处理NUL
字节是完全正确的必要条件。如果文件路径中没有空格,则命令更简单:
rg --files | rg '.*\.h$' | xargs rg PM_RESUME
Run Code Online (Sandbox Code Playgroud)