すべての検索文字列に一致する電子書籍を繰り返し検索します。

すべての検索文字列に一致する電子書籍を繰り返し検索します。

pdf、epub、mobiファイルがいくつかあります。以下を含むすべてのファイルを検索したいと思います。

  • 全部または専務
  • 一般的な
  • 災害を招く

つまり、すべての単語がファイルに表示される必要があることを意味します。同じ行、段落、またはページにある必要はありません。

スペースを含むクエリを使用することもできます。

現在私はコマンドを使用しています

rga 'all-or-nothing' --ignore-case --files-with-matches \
| xargs -I{} rga 'pervasive' --ignore-case --files-with-matches "{}" \
| xargs -I{} rga 'catastrophizing' --ignore-case --files-with-matches "{}"

これにはいくつかの問題があります。

  • xargs:一致しない一重引用符。 -0オプションを使用しない限り、デフォルトでは引用符はxargsに特別です。
  • このコマンドは、複数回実行しても同じファイルに対して同じ結果を提供しません。

ここでより良い解決策があるかもしれません。

アップデート1:

これまで私が見つけたものは次のとおりです。

comm -12 <(rga 'A1' --ignore-case --files-with-matches | sort) \
<(rga 'A2' --ignore-case --files-with-matches | sort) \
| comm -12 - <(rga 'A3' --ignore-case --files-with-matches | sort) \
| comm -12 - <(rga 'A4' --ignore-case --files-with-matches | sort)

rgaこのソリューションは4回実行されるため、まだパフォーマンスの良いソリューションを探しています。

関連情報