【Linux】再帰的な検索(grep)をする

【Linux】再帰的な検索(grep)をする

Linuxで再帰的な検索をする場合は、grepコマンドのrオプションを利用します。またlオプションと組み合わせることで、該当ファイルの一覧も取得することができます。

Linuxで再帰的な文字列検索をする場合はgrepコマンドのrオプションを用います。

文字列検索(再帰)

構文は以下の通りです。

grep -r [キーワード] [検索対象ディレクトリ]

grepの-rオプションで再帰的に検索ができます。
キーワードに検索したい文字列を指定し、検索対象ディレクトリのパスを置き換えて実行します。
以下コマンドは、カレントディレクトリ配下のファイルをkeywordで再帰検索します。

grep -r "keyword" ./

実行結果はファイルパスと該当箇所が出力されます。

特定ディレクトリを除外して検索

特定のディレクトリを除外する場合は--exclude-dirオプションを利用します。

grep -r "keyword" ./ --exclude-dir=.git

複数ディレクトリを除外する場合はディレクトリを{}で囲い,(カンマ)で区切ります。

grep -r "keyword" ./ --exclude-dir={.git,node_modules}

特定のファイルを指定して検索

特定のファイルタイプを指定する場合は、--includeおよび--excludeを指定します。

# .txtファイルに絞り込んで再帰検索
grep -r "keyword" ./ --include="*.txt"

# .logファイルを除外して再帰検索
grep -r "keyword" ./ --exclude="*.log"

# .txtファイル(.old.txtを除く)に絞り込んで再帰検索
grep -r "keyword" . --include="*.txt" --exclude="*.old.txt"

## keywork:検索文字列に置き換える。

ファイル名一覧取得

grepに-lオプションを付けるとkeywordで絞り込んだファイル名の一覧を取得することができます。

以下コマンドはカレントディレクトリ配下のファイルをkeywordで再帰検索し、対象ファイルのパス一覧を取得します。

grep -rl "keyword" ./

各オプションまとめ

各オプションの意味は以下の通りです。

オプションロングオプション意味
-r—recursive再帰検索時に指定する
-l—files-with-matchesマッチするファイル名を検索する

再帰的に検索した文字列を一括置換したい場合、こちらのリンクで紹介しています。

以上です。
よいITライフを。