ripgrep (通称 rg
) は Rust で作られたコマンドラインツールです。 grep
を同じでファイツ中の文字列を検索出来ますが、非常に動作スピードが速いです。 grep
で再帰検索させる場合は find
と組み合わせて利用するケースが多いと思いますが、ripgrep
は単体で再帰検索可能です。
インストール
ソースコードからインストールすることも出来ますが、今回はリポジトリからインストールします。
CentOS7 (yum)
リポジトリを追加し、インストールします。
yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo yum -y install ripgrep
CentOS8 (dnf)
基本的には CentOS7 と同じですが、dnf
を使います。 追加するリポジトリの URL は CentOS8 と同じです。
dnf config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo dnf -y install ripgrep
設定ファイル
ripgrep
は設定ファイルでオプションの無い場合の振る舞いを変更することが出来ます。 設定ファイルは決まっておらず、環境変数 RIPGREP_CONFIG_PATH
でファイル名を指定する必要があります。
export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc"
GitHub の該当部分 では設定ファイル例として以下が記載されていました。
$ cat $HOME/.ripgreprc # Don't let ripgrep vomit really long lines to my terminal, and show a preview. --max-columns=150 --max-columns-preview # Add my 'web' type. --type-add web:*.{html,css,js}* # Using glob patterns to include/exclude files or folders --glob=!git/* # or --glob !git/* # Set the colors. --colors=line:none --colors=line:style:bold # Because who cares about case!? --smart-case
使い方
基本的な使い方をメモしておきます。
再帰的に検索を行う
ripgrep
を実行するには rg
コマンドを使います。 以下のように実行するとサブディレクトリを含む、現在ディレクトリ配下を検索します。 grep
と異なり、デフォルトではバイナリファイルは避けて検索を行います。
rg [PATTERN]
指定ファイルを検索する
ファイルを検索する場合は検索したい文字列に続けて、ファイル名を指定します。
rg [PATTERN] [FILE]
指定ディレクトリを検索する
ディレクトリを検索する場合は検索したい文字列に続けて、ディレクトリ名を指定します。 この場合も「指定したディレクトリ配下のサブディレクトリも含む」再帰検索動作を行います。
rg [PATTERN] [DIRECTORY]