メインコンテンツへスキップ

Linuxの検索コマンド

🌱 はじめに

Linuxを使っていると、ファイルや文字列を探す場面は日常的に訪れます。
本記事では、findgrep といった定番検索コマンドの基本的な使い方から、知っておくと作業効率がぐっと上がるTIPSまでをまとめます。


📂 ファイル検索系コマンド

find

  • 指定したディレクトリ以下を再帰的に検索できる

  • 条件を組み合わせる柔軟性が高い

基本例

find /home/user -name "*.txt"

*.txt のファイルを探す

TIPS

  • 更新時間で探す

    find . -mtime -1
    

    → 直近1日以内に更新されたファイル

  • サイズで探す

    find . -size +100M
    

    → 100MB以上のファイル

  • 見つけたファイルに対してコマンド実行

    find . -name "*.log" -exec rm {} \;
    

    .log ファイルを削除

-exec オプションを使えば「検索して即処理」という流れが一発で完結します。


locate + updatedb

  • ファイルパスをインデックス化して高速検索

  • find よりはるかに速いが、最新のファイルは updatedb を実行しないと反映されない

locate bashrc

.bashrc の場所を一瞬で表示

最新状態を必ず保証したいなら find を選ぶ方が安全。


🔍 ファイル内容検索系コマンド

grep

  • テキスト内検索の王道コマンド

基本例

grep "error" /var/log/syslog

TIPS

  • 再帰的に検索

    grep -r "TODO" .
    
  • 行番号を表示

    grep -n "main" *.c
    
  • 大文字小文字を無視

    grep -i "error" logfile
    
  • マッチ部分を色付きで表示(多くの環境でデフォルト有効)

    grep --color=auto "pattern" file
    

grep の上位互換として ripgrep (rg)ag (the silver searcher) が人気です。速度が桁違いに速く、Gitリポジトリ検索に最適。


🛠️ 検索を組み合わせるテクニック

find + grep

find . -name "*.py" | xargs grep "def "

→ Pythonファイル内の関数定義を検索

grep + less

grep "error" logfile | less

→ 長い検索結果をスクロールしながら確認

ps + grep

ps aux | grep nginx

→ 実行中の nginx プロセスを検索

この場合、grep nginx 自体も結果に出てしまうので、以下のように工夫するのが定番:

ps aux | grep [n]ginx

🚀 便利な近代ツール

  • ripgrep (rg)
    超高速な grep 代替。Git管理下の除外設定も自動で反映。

  • fd
    find のモダン代替。直感的で高速。例:

    fd pattern
    

これらを組み合わせると「コード検索の快適さ」が段違いに向上します。


🎯 まとめ

  • ファイル名なら find / locate

  • 内容検索なら grep

  • 速度と快適さ重視なら ripgrepfd

  • findgrep の組み合わせで強力な一括処理が可能

Linuxの検索は「とりあえずgrep」から一歩進めると作業効率が飛躍的に高まります。