2つ(全部または一部)キーワードコンテンツ(txtファイル)を含むファイルと、特定のファイル名を含むファイルのフォルダとサブフォルダを検索する

2つ(全部または一部)キーワードコンテンツ(txtファイル)を含むファイルと、特定のファイル名を含むファイルのフォルダとサブフォルダを検索する

私はこれを共有したかったので、このようなツールがより多く提供されることを願っています。

テキストファイルディレクトリがあります。 2つの(部分的な)単語を含むファイルを検索する必要があります。キーワードはランダムな順序ですが、同じ行にあります。

これまで私はこれを使うことができます:

$ rg -i '\w*keyword1\w*.*\w*keyword2\w*|\w*keyword2\w*.*\w*keyword1\w*' --glob '*.txt' --line-number -l /path/to/search

$ rg -g '*.txt' -l -i 'keyword1.*keyword2|keyword2.*keyword1' /path/to/search

どちらも同じことができます。

同じことができる人がまたいますか?共有してください。正しいファイルを見つけるには、これが頻繁に必要であることがわかりました。

ところで、ファイル名が順序が合わない2つのキーワードであるファイルを検索する方法がわかりません。順序が合わない2つのキーワードを使用してファイル名を検索するには?例:奇妙なファイル名_key1Nkey3Nkey2etc.txt巨大なデータベースから名前を検索すると、「key2」と「key3」で構成されたファイルだけが記憶されますが、順序はわかりません。

答え1

おそらく:

rg -iPlg '*{Key1*Key2,Key2*Key1}*.txt' '^(?=.*keyword1)(?=.*keyword2)' dir

を使用すると、プレビュー演算子を-P含むPCRE正規表現を取得できます。後^に任意の数の文字が続くと、行の先頭を一致させることができ、keyword1その後に任意の数の文字が続く場合に一致させることができますkeyword2

-g '*{Key1*Key2,Key2*Key1}*.txt'csh 中括弧拡張と似た-g '*Key1*Key2*.txt -g '*Key2*Key1*.txt'略語で、{x,y}標準シェル glob モードの ripgrep 拡張です。

関連情報