ripgrep 路径模式

ripgrep 路径模式

我希望 ripgrep 搜索具有指定模式的路径。例如

rg PATTERN --path REGEX

其中 PATTERN 是 grep 的模式,REGEX 是路径匹配模式。

我已经阅读了文档,并且不确定此功能是否已包含在内。

答案1

使用-g/--glob标志,如指南中记录了。它使用通配符而不是正则表达式,但在实践中完成了相同的事情。例如:

rg PM_RESUME -g '*.h'

PM_RESUME在我检查 Linux 内核时发现仅在 C 头文件中出现了。

ripgrep 没有提供使用正则表达式来匹配文件路径的方法。相反,如果您绝对需要使用正则表达式,则应该使用 xargs:

rg --files -0 | rg '.*\.h$' --null-data | xargs -0 rg PM_RESUME

分解一下:

  • 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

答案2

你可以使用FD:

$ fd -p REGEX | xargs rg PATTERN

相关内容