ripgrepパスパターン

ripgrepパスパターン

ripgrepが指定されたパターンでパスを検索するようにしたいと思います。例えば

rg PATTERN --path REGEX

その中で、PATTERNはgrepパターンであり、REGEXはパスマッチングパターンである。

ドキュメントを読みましたが、この機能がまだ含まれているかどうかはわかりません。

答え1

-g/--glob次のフラグを使用してください。ガイドに記録されている。正規表現の代わりにワイルドカードを使用しますが、実際には同じことを行います。たとえば、

rg PM_RESUME -g '*.h'

PM_RESUMELinuxカーネルを調べたところ、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-dataNUL
  • xargs -0 rg PM_RESUME区切られたパラメータを分割して、NUL初期正規表現に一致するファイルのリストと正確に一致するripgrepに提供します。

完全な精度を得るにはバイト処理がNUL必要です。ファイルパスにスペースがない場合、コマンドはより簡単です。

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

答え2

使用できるFD:

$ fd -p REGEX | xargs rg PATTERN

関連情報