ripgrepコマンドでLinuxのテキストを高速検索する方法|grepとの使い分けと実践的なオプション

運営:リナックスマスター.JP(代表 宮崎智広)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxtips > ripgrepコマンドでLinuxのテキストを高速検索する方法|grepとの使い分けと実践的なオプション
「grepで大きなリポジトリを検索すると遅くて使い物にならない。」
「node_modulesや.gitを毎回--excludeで除外するのが面倒。」

こういった不満を解消するのがripgrep(コマンド名:rg)です。Rustベースのオープンソースのテキスト検索ツールで、grepとほぼ同じ構文で使えながら、大きなコードベースやログディレクトリでも桁違いのスピードを発揮します。

この記事では、RHEL 9系/Ubuntu 24.04 LTSを想定環境として、ripgrepのインストールから基本的な使い方、よく使うオプション、grepとの使い分け、よくあるトラブルまでを解説します。

この記事のポイント

・ripgrepは.gitignoreを自動的に参照して対象外ファイルをスキップする
・rg キーワード でディレクトリ再帰検索が完結する(-r が不要)
・-t py / -t sh でファイル種別を絞り込める
・grepとの構文互換性が高く、乗り換えコストが小さい


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

ripgrepとは?grepと何が違うのか

grepはLinuxに標準搭載されており、ファイル内のテキスト検索で長年使われてきたコマンドです。ただし、次のような場面で動作が遅くなりがちです。

・node_modulesや.gitなどの大量ファイルを含むディレクトリを再帰的に検索するとき
・バイナリファイルを逐一開いてしまうとき
・エンコーディングが混在するファイルが含まれるとき

ripgrepはこれらの問題を構造的に解決します。主な特徴を整理します。

特徴 grepとの違い
.gitignoreを自動参照 grepは.gitignoreを参照しない(--excludeで手動指定が必要)
バイナリファイルを自動スキップ grepはバイナリも開く(-Iオプションで除外できるが追記が必要)
デフォルトで再帰検索 grepは-rが必要。rgはディレクトリを渡すだけで再帰する
マルチスレッド処理 grepはシングルスレッド。大規模検索でripgrepが大幅に速い
ファイル種別フィルタ(-t) grepにはない。-t py で.pyファイルだけを対象にできる

ripgrepのインストール

1. RHEL 9系 / Rocky Linux / AlmaLinux

RHEL 9以降のEPELリポジトリにripgrepが含まれています。

# EPELを有効化(未導入の場合) sudo dnf install -y epel-release # ripgrepをインストール sudo dnf install -y ripgrep # バージョン確認 rg --version

出力例(環境により異なります)

ripgrep 14.1.1 (rev e50df40a09)

2. Ubuntu / Debian

Ubuntu 22.04 LTS以降は標準リポジトリにripgrepが含まれています。

sudo apt install -y ripgrep rg --version

基本的な使い方

1. シンプルな文字列検索

grepと同じ感覚で使えます。rg 検索文字列と打つと、カレントディレクトリ以下を再帰的に検索します。

# カレントディレクトリ以下を再帰検索(-r は不要) rg 検索文字列 # 特定ディレクトリを対象に検索 rg 検索文字列 /var/log/ # 特定ファイルを対象に検索 rg 検索文字列 /etc/nginx/nginx.conf # マッチしたファイル名だけを表示(-l) rg -l 検索文字列

2. よく使うオプション

# 大文字・小文字を区別しない(-i) rg -i error /var/log/messages # マッチした前後N行のコンテキストを表示(-C) rg -C 3 "Failed password" /var/log/secure # 正規表現で検索(デフォルトで有効) rg "ERROR.*timeout" /var/log/ # 固定文字列として検索(正規表現を無効化・-F) rg -F "192.168.1.1" /var/log/ # マッチ数だけをカウント(-c) rg -c "FAILED" /var/log/secure

3. ファイル種別フィルタ(-t)

ripgrepが内部で持っているファイル拡張子の定義を使い、特定種別のファイルだけを対象にできます。grepには無い機能で、コードリポジトリを検索するときに特に便利です。

# Pythonファイルだけを検索(-t py) rg -t py "import os" # シェルスクリプトだけを検索(-t sh) rg -t sh "#!/bin/bash" # 設定ファイル(.conf・.cfg)を検索(-t conf) rg -t conf "Listen 80" # 使えるファイル種別を一覧表示 rg --type-list

4. 除外パターンを指定する(-g)

-gオプションにglob形式のパターンを渡します。除外する場合は先頭に!を付けます。

# 特定のディレクトリを除外 rg キーワード -g '!target/' -g '!.git/' # *.logファイルを除外 rg キーワード -g '!*.log' # バックアップファイル(~)を除外 rg キーワード -g '!*~'

5. .gitignoreと自動除外

ripgrepはデフォルトで.gitignoreを読み、そこに書かれたパターンを自動的に除外します。これによってnode_modules・dist・__pycache__などのディレクトリを毎回指定しなくても自動的にスキップされます。

# .gitignoreを無視して全ファイルを検索(--no-ignore) rg --no-ignore キーワード # 隠しファイル・ディレクトリ(.始まり)も含めて検索(--hidden) rg --hidden キーワード # .gitignore無視 + 隠しファイルも含む(-u を2回重ねる) rg -uu キーワード

【注意】 rg -uu キーワードは隠しファイルもバイナリも含めて検索するため、出力が非常に多くなります。通常の検索には使わず、「なぜか検索結果が出ない」ときの原因切り分け用として使ってください。

よく使うオプション一覧

やりたいこと コマンド
大文字・小文字を区別しない rg -i キーワード
マッチしたファイル名だけを表示 rg -l キーワード
ファイルごとのマッチ数を表示 rg -c キーワード
前後3行のコンテキストを表示 rg -C 3 キーワード
Pythonファイルだけを検索 rg -t py キーワード
特定ディレクトリを除外して検索 rg キーワード -g '!target/'
固定文字列で検索(正規表現を無効) rg -F キーワード
.gitignoreを無視して全検索 rg --no-ignore キーワード
隠しファイルも含めて検索 rg --hidden キーワード
単語単位で検索 rg -w キーワード

実務での活用パターン

パターン1: サーバーのログから特定エラーを探す

# /var/logディレクトリ以下のエラー行を検索 rg -i "error|failed|critical" /var/log/ # 前後5行で文脈を確認 rg -C 5 "Connection refused" /var/log/nginx/ # 日付を絞ってエラーを検索 rg "2026-10" /var/log/messages | grep -i error

パターン2: 設定ファイル内の設定値を一括確認

# /etc以下のすべての設定ファイルからListenポートを確認 rg "^Listen|^listen" /etc/ -g '*.conf' # nginx.d配下から特定のサーバーブロックを検索 rg "server_name" /etc/nginx/ -l # 設定ファイルにキーワードが含まれるか確認 rg -t conf "ServerName" /etc/httpd/

パターン3: シェルスクリプト内の関数・変数を調べる

# /usr/local/binのシェルスクリプトから関数定義を検索 rg -t sh "^function |^\w+\(\)" /usr/local/bin/ # 特定の変数名が使われているスクリプトを特定 rg -l "BACKUP_DIR" /etc/cron.d/ /usr/local/bin/

grepとripgrepの使い分け

ripgrepを導入したあとでも、grepが適している場面があります。

場面 適しているコマンド 理由
コードリポジトリ内を検索 ripgrep .gitignoreを自動参照、高速
大量のログファイルを検索 ripgrep マルチスレッドで速い
パイプ経由で入力を受け取る grep rgはstdinからの検索に「-」指定が必要
バイナリファイルも対象にする grep -a rgはバイナリを自動スキップする
外部サーバーやコンテナ内で使う grep grepはほぼ全環境に標準搭載
シェルスクリプト内での使用 grep(推奨) ripgrepが未導入の環境への移植性
Linuxサーバーの日常的なコマンド操作を体系的に身につけたい方には、Linux Master Pro Seminarのカリキュラムで検索ツールの実践的な使い方も扱っています。

「検索結果が出ない」時のトラブルシュート

1. .gitignoreに除外パターンがある場合

「ファイルが存在するはずなのにヒットしない」場合、まず--no-ignoreで試してみます。

# .gitignoreを無視して再検索 rg --no-ignore キーワード # 隠しファイルも含める rg --hidden --no-ignore キーワード

2. RHEL 9系でインストールできない(dnf: No match)

EPELリポジトリが有効になっていない場合に発生します。

# EPELが有効かどうか確認 dnf repolist | grep epel # 有効でなければ追加 sudo dnf install -y epel-release sudo dnf install -y ripgrep

3. バイナリファイルも検索したい

ripgrepはデフォルトでバイナリをスキップします。バイナリを含めて検索したい場合は-a(--text)を付けます。

# バイナリも含めて検索 rg -a キーワード

【注意】 バイナリファイルの検索は大量の意味のない結果を返すことがあります。通常のテキスト検索では使わず、「そのファイルにキーワードが含まれているか」の確認に限定して使ってください。

本記事のまとめ

やりたいこと コマンド
カレントディレクトリ以下を再帰検索 rg キーワード
大文字・小文字を区別しない rg -i キーワード
前後3行のコンテキストを表示 rg -C 3 キーワード
Pythonファイルだけを検索 rg -t py キーワード
特定ディレクトリを除外 rg キーワード -g '!target/'
.gitignoreを無視して全検索 rg --no-ignore キーワード
隠しファイルも含めて検索 rg --hidden キーワード
マッチしたファイル名だけ表示 rg -l キーワード
ripgrepはgrepとほぼ同じ感覚で使い始められます。まずはrg キーワードと打つだけで、grepとの速度差を体感してみてください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
コマンドの実践的な使い方からサーバー設計・セキュリティ設定まで、20年以上の現場経験をもとに2日間のハンズオンセミナーで直接指導しています。

>> Linux Master Pro Seminarの詳細はこちら

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

運営

リナックスマスター.JP(代表 宮崎智広)

株式会社イーネットマーキュリーが運営するLinux教育サイトです。代表の宮崎智広は現役のLinuxサーバー管理者として20年以上の実務経験を持ち、累計3,100名以上のエンジニアを指導してきました。実践型のLinuxセミナーや無料マニュアルの配布を通じてLinux人材の育成に取り組んでいます。