「あのファイルどこに保存したっけ…」「特定の拡張子のファイルを一括で探したい」そんなときに使うのが find コマンドです。Linuxの検索コマンドの中で最も強力で柔軟性が高く、インフラエンジニアの必須ツールです。
findコマンドの基本構文
find の基本構文は find [検索ディレクトリ] [オプション] です。検索ディレクトリを省略するとカレントディレクトリ以下を検索します。
💡 find と grep の違い:find はファイル自体を探すコマンドです。ファイルの中身を検索したい場合は grep を使います。
# 基本構文
$ find [検索開始ディレクトリ] [検索条件] [アクション]
# 例:/home以下のすべてのファイルを表示
$ find /home
# 例:カレントディレクトリ以下を検索
$ find .
よく使うオプション一覧

名前で検索する(-name / -iname)
# 拡張子.logのファイルを検索
$ find /var/log -name "*.log"
# 大文字小文字を無視して検索
$ find . -iname "readme*"
# 特定のファイル名を検索
$ find / -name "nginx.conf" 2>/dev/null
# 2>/dev/null でPermission deniedエラーを非表示
⚠️ ワイルドカードは必ずクォートで囲むfind . -name *.txt はシェルが先に展開してしまい意図しない動作になります。find . -name "*.txt" のように ダブルクォートで囲むのが正しい書き方です。
種類で検索する(-type)
# 通常ファイルのみ
$ find /home -type f
# ディレクトリのみ
$ find /etc -type d
# シンボリックリンクのみ
$ find /usr -type l
サイズで検索する(-size)
# 100MB以上のファイルを検索
$ find / -type f -size +100M 2>/dev/null
# 1KB以下の空に近いファイル
$ find . -type f -size -1k
# ちょうど1MBのファイル
$ find . -size 1M
日時で検索する(-mtime / -atime)
# 7日以内に変更されたファイル
$ find . -mtime -7
# 30日以上前に変更されたファイル(古いログ削除に使う)
$ find /var/log -name "*.log" -mtime +30
# 1時間以内に変更されたファイル
$ find . -mmin -60
見つかったファイルにコマンドを実行する(-exec)
-exec は検索結果に対してコマンドを実行する最も強力な機能です。{} が検索結果のファイル名に置換されます。末尾の \; は「コマンドの終わり」を示す必須の記号です(バックスラッシュはシェルへのエスケープ)。\; の代わりに + を使うと、複数ファイルを一度にまとめて処理するため高速になります。
# 見つかった.tmpファイルをすべて削除
$ find /tmp -name "*.tmp" -exec rm {} \;
# 見つかったファイルの詳細を表示
$ find . -name "*.sh" -exec ls -l {} \;
# 見つかったディレクトリのパーミッションを変更
$ find . -type d -exec chmod 755 {} \;
# -delete オプションで直接削除(-execより高速)
$ find /tmp -name "*.tmp" -delete
条件を組み合わせる
# 30日以上前の.logファイルを削除(実運用でよく使う)
$ find /var/log -name "*.log" -mtime +30 -delete
# 特定ディレクトリを除外して検索
$ find / -name "*.conf" -not -path "*/proc/*" 2>/dev/null
# AND条件(デフォルト)
$ find . -type f -name "*.py" -size +1k
# OR条件(-o)
$ find . -name "*.jpg" -o -name "*.png"
まとめ
find [パス] -name "パターン":ファイル名で検索。*でワイルドカード-iname:大文字小文字を無視して検索-type f:ファイル、-type d:ディレクトリに絞り込む-size +100M:サイズ条件。+は以上、-は以下-mtime -7:日時条件。-は7日以内、+は7日より前-exec コマンド {} \;:検索結果にコマンドを実行2>/dev/null:権限エラーを非表示にする定番パターン
関連記事
📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。



コメント