grep・find

にメンテナンス済み

Linux で効率よく作業するには、目的の文字列やファイルを素早く探す力が重要です。 grep はファイル内容の検索、find はファイル名や条件による検索に使います。

grepで文字列を検索する

grep は、ファイル内から指定した文字列を含む行を表示します。

文字列検索
grep "error" app.log

大文字と小文字を区別せずに検索する場合は、-i を使います。

大文字小文字を区別しない検索
grep -i "error" app.log

行番号も表示したい場合は、-n を使います。

行番号付きで検索
grep -n "timeout" app.log

特定の文字列を含まない行だけを表示する場合は、-v を使います。

除外して検索
grep -v "DEBUG" app.log

ログに多いデバッグ出力を除いて、警告やエラーだけ確認したい場面でよく使います。

マッチしたファイルの名前だけを表示したい場合は、-l を使います。

ファイル名だけを表示
grep -r -l "TODO" ./src

ディレクトリ配下をgrepする

複数ファイルをまとめて検索する場合は、-r を使います。

再帰検索
grep -r "database" ./src

特定の拡張子だけを対象にしたい場合は、--include を組み合わせます。

拡張子を絞って検索
grep -r --include="*.ts" "fetch" ./src

コードや設定ファイルを調べるときに便利です。

findでファイルを検索する

find は、ファイル名、種類、更新日時、サイズなどの条件でファイルを探します。

名前で検索
find . -name "*.log"

この例では、現在のディレクトリ以下から .log で終わるファイルを探します。

ディレクトリだけを探す場合は、-type d を指定します。

ディレクトリだけ検索
find . -type d -name "node_modules"

ファイルだけを探す場合は、-type f を指定します。

ファイルだけ検索
find . -type f -name "*.conf"

更新日時で検索する

最近変更されたファイルを探す場合は、-mtime-mmin を使います。

24時間以内に変更されたファイル
find . -type f -mtime -1
60分以内に変更されたファイル
find . -type f -mmin -60

障害調査や、直近で生成されたログを探すときに役立ちます。

grepとfindを組み合わせる

find で対象ファイルを絞り、grep で内容を検索することもできます。

findとgrepの組み合わせ
find ./logs -type f -name "*.log" -exec grep -n "ERROR" {} \;

{} には find で見つかったファイル名が入り、\;-exec の終わりを表します。

まとめ

grep はファイル内容を探すコマンド、find はファイルそのものを探すコマンドです。 ログ調査、コード調査、設定ファイル確認など、Linux 作業の多くはこの 2 つを使えるだけでかなり効率化できます。

#Linux #Bash #grep #find