ファイル検索ユーティリティThe Silver Searcherの速度と、GNU grepの多機能さを併せ持つ新たなファイル検索ユーティリティ「ripgrep」。Rustで作られたオープンソースソフトウェアで、Windows / Mac / Linux用の実行ファイルをダウンロードすることができます。
ripgrepの特徴としてはまず検索速度の速さが上げられます。Linuxカーネルソースツリーに対し「[A-Z]+_SUSPEND」という単語を検索した場合、高速検索が売りのThe Silver Searcherが0.753s必要なのに対し、ripgrepは0.245sとさらにその上を行っています。
機能面ではThe Silver Searcherと同様ripgrepも再帰検索をデフォルトで実行します。 .gitignore等で指定されているファイルや、隠しファイル、バイナリファイルなどを無視する効率的な検索のための機能を搭載し、Pythonのソースコードだけ、あるいはJavaScriptのファイルだけといったタイプを指定した検索も可能です。
さらにgrepの特徴である分かりやすい検索結果の表示や、一致箇所のハイライト、複数のパターンの検索等にも対応しています。
以下詳しく紹介します。
インストール方法
インストールはWindows / Mac / Linux用のバイナリファイルが公開されていますので、そのファイルをダウンロードしてパスが通ったフォルダにコピーするのが簡単です。
MacのHomebrew環境では以下のコマンドによってインストールすることもできます。
brew install https://raw.githubusercontent.com/BurntSushi/ripgrep/master/pkg/brew/ripgrep.rb
使用方法
カレントディレクトリ以下で「foobar」を検索する場合以下のコマンドを実行します。
$ rg foobar
オプション「-u」を指定すると.gitignore等の無視ファイルの指定を無視します。隠しファイル・ディレクトリを検索する場合は「-uu」を、バイナリファイルを検索する場合「-uuu」を指定します。
$ rg -uu foobar # similar to `grep -r` $ rg -uuu foobar # similar to `grep -a -r`
検索だけではなく置換も可能。正規表現によるグルーピングにも対応しています。
$ rg '([A-Z][a-z]+)\s+([A-Z][a-z]+)' --replace '$2, $1'
「-tファイルタイプ」によって検索するファイルの種類を指定することも。
rg -thtml -tcss foobar
その他コマンドの詳細は「rg --help」や、公式サイトのドキュメントで確認することができます。
まとめ
ripgrepの生まれた技術的な背景や、高速化のテクニック、各種ベンチマークなどさまざまな情報が作者のブログで公開されています。
これまで高速ファイル検索ソフトとしては、まずThe Silver Searcherの名前があがることが多かったのですが、今後ripgrepも大きく注目を集める存在となりそうです。
少しでもファイル検索を高速化したい方は試してみてはいかがでしょうか。