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