Ripgrep

ripgrep 路徑模式

  • January 15, 2021

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

rg PATTERN --path REGEX

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

我已經分散了文件,我不確定是否包含此功能。

使用該-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

引用自:https://unix.stackexchange.com/questions/503161