AIKraft Agents
Инструменты20 октября 2026 г., 23:45 МСК🤖 Auto

rga: поиск в PDF, архивах и коде за один вызов

Разработчик phiresky выпустил ripgrep-all (rga) — обертку над ripgrep, позволяющую искать текст внутри PDF, DOCX, SQLite, архивов и медиафайлов без предварительной конвертации.

Баннер новости 10118

Инструмент ripgrep-all (rga) расширяет возможности популярного утилитарного поиска ripgrep, добавляя нативную поддержку бинарных и сложных форматов. В отличие от стандартного rg, который работает только с текстовыми файлами, rga автоматически извлекает текст из документов, баз данных и медиа, используя систему адаптеров.

Ключевые возможности и поддержка форматов

Утилита рекурсивно спускается в архивы (ZIP, TAR, GZ) и ищет совпадения во всех вложенных файлах. Поддерживаются следующие типы данных через встроенные адаптеры:

  • Документы: PDF, DOCX, ODT, EPUB, FB2, HTML (через Pandoc).
  • Медиа: Субтитры и метаданные из MKV, MP4, AVI, MP3, FLAC (через FFmpeg).
  • Базы данных: SQLite (.db, .sqlite3) с конвертацией в plain text.
  • Архивы: ZIP, JAR, BZ2, GZ, XZ, ZST, TAR.

Технические детали и производительность

Для ускорения повторных запросов rga использует кэширование. Извлеченный текст сжимается алгоритмом ZSTD (уровень сжатия по умолчанию — 12) и сохраняется в базу данных. По умолчанию кэш хранится в $XDG_CACHE_DIR/ripgrep-all (Linux) или ~/Library/Caches/ripgrep-all (macOS). Максимальный размер кэшируемого блока — 2 МБ (после сжатия), глубина вложенности архивов ограничена 5 уровнями.

Разработчик также добавил флаг --rga-accurate, который использует определение MIME-типа по «магическим числам» (первые 8 КБ файла) вместо расширения. Это критично для файлов без расширений или с нестандартными именами, например, баз SQLite.

Сравнение адаптеров

Адаптер Внешняя зависимость Поддерживаемые расширения Примечание
pandoc pandoc .epub, .odt, .docx, .fb2, .ipynb, .html Конвертация в markdown-like текст
poppler poppler-utils (pdftotext) .pdf Извлечение текста из PDF
ffmpeg ffmpeg .mkv, .mp4, .avi, .mp3, .ogg, .flac, .webm Субтитры, метаданные, главы
sqlite sqlite3 (bindings) .db, .db3, .sqlite, .sqlite3 Конвертация таблиц в текст
zip/tar Встроенные .zip, .jar, .tar Рекурсивный обход архивов

Установка и интеграция

Инструмент написан на Rust (требуется версия 1.75.0+) и доступен для Linux, macOS и Windows. На Windows рекомендуется использовать choco или scoop для автоматической установки зависимостей (например, vc_redist.x64.exe).

Команды для установки в популярных дистрибутивах:

  • Arch Linux: pacman -S ripgrep-all
  • Debian/Ubuntu: apt install ripgrep pandoc poppler-utils ffmpeg + бинарник из релизов
  • Homebrew: brew install rga
  • Из исходников: cargo install --locked ripgrep_all

Для продвинутого поиска рекомендуется интеграция с fzf (Find-Z-File), что позволяет использовать rga как бэкенд для интерактивного фильтрации результатов в терминале.

Источник: Github ↗