Linuxの検索コマンド
🌱 はじめに
Linuxを使っていると、ファイルや文字列を探す場面は日常的に訪れます。
本記事では、find
や grep
といった定番検索コマンドの基本的な使い方から、知っておくと作業効率がぐっと上がる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
-
速度と快適さ重視なら
ripgrep
やfd
-
find
とgrep
の組み合わせで強力な一括処理が可能
Linuxの検索は「とりあえずgrep」から一歩進めると作業効率が飛躍的に高まります。