rga:在 PDF、电子书、Office 文档、档案等中搜索文本 (ripgrep Wrapper)

rga(或 ripgrep-all)是一个命令行工具,用于递归搜索目录中的所有文件以查找正则表达式模式,可在 Linux、macOS 和 Windows 上运行。 它是面向行的递归搜索程序 ripgrep 的包装器,在此基础上,它可以搜索多种文件类型,如 PDF、DOCX、ODT、EPUB、SQLite 数据库、嵌入在 MKV 或 MP4 文件中的电影字幕、档案,如ZIP 或 GZ 等。

rga 非常适合当您想从包含多种文件类型的许多文档的文件夹中的可用文件中搜索一些文本时,即使其中一些在档案中可用。

它是
快速地
同样,即使从第一次运行,
感谢多线程
.
在随后的运行中,它甚至更快
(就像搜索纯文本文件一样)
感谢缓存
. 如果您愿意,可以通过使用禁用缓存
--rga-no-cache

.

rga 使用 ripgrep (rg) 进行搜索,并设置了一些选项。 对于某些文件类型,需要使用外部程序来完成实际工作,例如使用 ffmpeg 从 mkv 或 mp4 文件中读取字幕,使用 pandoc 将 EPUB、ODT、DOCX、FB2 或 IPYNB 等文档转换为纯 Markdown 式文本,以及Grip 和 tar 以读取存档内容。

除了能够在文档、档案和嵌入在 mkv 或 mp4 文件中的字幕中搜索文本外,rga 还可以使用 OCR(使用 tesseract)搜索 JPG 或 PNG 图像或扫描的 PDF 文件中的文本。 默认情况下禁用此功能
不过,因为它很慢而且大部分时间都没有用,但是可以使用
--rga-adapters=+pdfpages,tesseract

.

搜索相关:Drill:新的桌面文件搜索实用程序,使用巧妙的爬行而不是索引

这是 rga (ripgrep-all) 适配器和支持的文件类型的列表:

  • ffmpeg
    • 使用 ffmpeg 提取视频元数据/章节和字幕
    • 扩展: .mkv、.mp4、.avi
  • 潘多克
    • 使用 pandoc 将二进制/不可读的文本文档转换为类似 Markdown 的纯文本
    • 扩展名:.epub、.odt、.docx、.fb2、.ipynb
  • 爆米花
    • 使用 pdftotext(来自 poppler-utils)从 PDF 文件中提取纯文本
    • 扩展: .pdf
  • 压缩
    • 将 zip 文件作为流读取并向下递归到其内容
    • 扩展: 。压缩
    • Mime 类型:应用程序/zip
  • 解压
    • 将压缩文件作为流读取,并对内容运行不同的提取器。
    • 扩展: .tgz、.tbz、.tbz2、.gz、.bz2、.xz、.zst
    • Mime 类型:application/gzip、application/x-bzip、application/x-xz、application/zstd
  • 柏油
    • 将 tar 文件作为流读取并向下递归到其内容
    • 扩展: 。柏油
  • sqlite
    • 使用 sqlite 绑定将 sqlite 数据库转换为简单的纯文本格式
    • 扩展: .db、.db3、.sqlite、.sqlite3
    • Mime 类型:application/x-sqlite3
  • pdf页面 (默认禁用):
    • 将 pdf 转换为单独的页面作为 png 文件。 仅与 tesseract 结合使用时有用
    • 扩展名:.pdf
  • 超立方体 (默认禁用):
    • 使用 tesseract 在图像上运行 OCR 以使其可搜索. 可能需要 -j1 以防止系统过载。 确保你已经安装了 tesseract。
    • 扩展: .jpg、.png

下载 rga (ripgrep-all)

rga GitHub 项目页面包含在 Linux、Windows 或 macOS 上安装该工具的说明。

请记住安装 rga 适配器使用的依赖项,以便能够搜索它支持的所有文件类型(以及 ripgrep 本身):ripgrep、pandoc、poppler(Debian/Ubuntu 上的 poppler-utils 包;名称取决于您使用的 Linux 发行版) ‘正在使用)、ffmpeg 和货物。

您可以通过下载 Linux x86_64 .tar.gz 存档来安装 rga 二进制文件,解压缩它,然后安装 rga 和 rga-preproc 二进制文件以
/usr/local/bin

使用(在提取这两个二进制文件的文件夹中运行命令):

sudo install rga rga-preproc /usr/local/bin/