ripgrep 路径模式

p0l*_*ris 5 ripgrep

我想ripgrep搜索指定的图样路径。例如

rg PATTERN --path REGEX
Run Code Online (Sandbox Code Playgroud)

其中pattern是到grep图案和正则表达式是路径匹配图案。

我已经分散了文档,我不确定这个功能是否已经加入。

Bur*_*hi5 8

使用该-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)