递归查找与所有搜索字符串匹配的电子书

递归查找与所有搜索字符串匹配的电子书

我有几个 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:不匹配的单引号;默认情况下,引号对于 xargs 是特殊的,除非您使用 -0 选项
  • 多次运行时,此命令不会对同一文件给出相同的结果。

这里可能有更好的解决方案。

更新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四次。

相关内容