レビュー

画像ファイルやデータベースの文字列を「grep」のように検索できる「ripgrep-all」


Linuxのコマンドラインで文字列を検索する際に必要不可欠なコマンドといえば「grep」です。しかし、grepは動画ファイルやPDFファイルの文字列を検索できないのが弱点。そんなgrepの弱点を克服し、動画ファイルのメタデータやデータベースのレコード、画像ファイル内の文字列まで検索可能なコマンドが「ripgrep-all(rga)」です。

GitHub - phiresky/ripgrep-all: rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.
https://github.com/phiresky/ripgrep-all

rgaはLinuxに限らずWindowsやmacOSでも利用することが可能。今回はUbuntu 20.04でrgaを利用してみます。以下のコマンドを実行して、あらかじめ依存するパッケージをインストールしておきます。


sudo apt install ripgrep pandoc poppler-utils ffmpeg


GitHubからrgaのバイナリファイルをダウンロードし、シェルの環境変数「PATH」で指定しているディレクトリに配置。rgaは記事作成時点で0.9.6が最新バージョンとなっています。

wget -O - 'https://github.com/phiresky/ripgrep-all/releases/download/v0.9.6/ripgrep_all-v0.9.6-x86_64-unknown-linux-musl.tar.gz' | tar zxvf -
sudo mv ripgrep_all-v0.9.6-x86_64-unknown-linux-musl/rga* /usr/local/bin


使い方は通常のgrepと同じく「rga 検索するキーワード 検索対象」と実行すればOK。試しに「gigazine GIGAZINE Gigazine」と記録した「gigazine.txt」をZIP形式とGZIP形式で圧縮し、rgaで検索してみると……


こんな感じで、圧縮ファイルの中身まで再帰的に検索してくれます。


rgaの使い方は通常のgrepと同じですが、挙動は少し異なります。例えば、通常のgrepはオプションなしの場合、大文字と小文字を区別して検索しますが、rgaは区別しません。rgaのバックエンド「ripgrep」はgrepと同じ挙動なので、rga特有の挙動ということになります。


通常のgrepは対応していない動画のメタデータ検索を試すため、「GIGAZINE 桃鉄」というタイトルを付けた動画ファイルを用意。


rgaで検索してみると、きちんと検索結果が表示されました。


電子書籍などで利用されるEPUBの文章も問題なく検索可能。


SQLite3データベースのレコードも検索することができました。


rgaで検索できるフォーマットは「rga --rga-list-adapters」コマンドで確認することが可能。記事作成時点で有効になっているフォーマットは以下の通り。

・動画ファイル(.mkv、.mp4、.avi)
・電子書籍(.epub、.odt、.docx、.fb2、.ipynb)
・PDFファイル
・圧縮ファイル(.zip、.tgz、.tbz、.tbz2、.gz、.bz2、.xz、.zst)
・アーカイブ(tar)
・SQLite3


デフォルトでは無効の状態ですが、「tesseract-ocr」パッケージをインストールして「--rga-adapters=+pdfpages,tesseract」オプションを利用すると、なんとJPEGやPNGなど、画像内の文字列を検索することも可能。以下のようなPNGファイルをrgaで検索すると……


PNGファイル内の文字列を自動で認識し、結果を表示してくれます。


通常のgrepと挙動が異なる点があるものの、rgaは幅広いファイルに対応した高機能なコマンドでした。

この記事のタイトルとURLをコピーする

・関連記事
ウィンドウサイズに合わせて表示される情報も変わるオープンソースのネットワーク監視ツール「bandwhich」を使ってみた - GIGAZINE

全能テキストエディタ「Vim」の歴史と開発者に広く普及した理由 - GIGAZINE

コマンド一発でウェブサイトのアクセスログをターミナルやウェブブラウザで可視化できる「GoAccess」レビュー - GIGAZINE

おなじみ「ping」コマンドの生みの親が20年以上前に開発秘話を記したブログ - GIGAZINE

in レビュー,   ソフトウェア, Posted by log1n_yi

You can read the machine translated English article here.