Linuxのfindコマンドは、ファイルやディレクトリを柔軟かつ強力に検索できる必須ツールです。本記事では、findコマンドの基本から応用まで、実際の使用例を交えてわかりやすく解説します。初心者から上級者まで役立つ内容を網羅しています。
findコマンドとは
findコマンドは、指定したディレクトリ以下のファイルやディレクトリを、名前・種類・サイズ・更新日時など多様な条件で検索できるLinux標準コマンドです。システム管理や開発、運用現場で頻繁に利用されます。
基本構文と主なオプション
基本構文
find [検索開始ディレクトリ] [検索条件] [実行アクション]
- 検索開始ディレクトリ:検索を始めるパス(例:. や /home/user など)
- 検索条件:ファイル名や種類、サイズなど
- 実行アクション:検索結果に対して何をするか(例:表示、削除など)
主なオプション一覧
オプション | 説明 | 使用例 |
---|---|---|
-name | ファイル名で検索 | find . -name "test.txt" |
-iname | 大文字小文字を区別せずファイル名検索 | find . -iname "*.jpg" |
-type | ファイル種別で検索(f:ファイル, d:ディレクトリ) | find . -type d |
-size | サイズで検索(+/-指定可、k/M/G単位) | find . -size +10M |
-mtime | 最終更新日からの日数で検索 | find . -mtime -7 |
-user | 所有ユーザーで検索 | find . -user username |
-perm | パーミッションで検索 | find . -perm 755 |
-exec | 検索結果に対してコマンド実行 | find . -name "*.log" -exec rm {} \; |
-delete | 検索結果を削除 | find . -name "*.tmp" -delete |
-maxdepth | 検索する階層の最大深さ | find . -maxdepth 2 -name "*.txt" |
-prune | 特定ディレクトリを検索対象から除外 | find . -path "./dir" -prune -o -print |
よく使う検索例
- ファイル名で検索
find . -name "sample.txt"
- 拡張子で検索
find . -name "*.log"
- ディレクトリだけ検索
find . -type d
- サイズが10MB以上のファイル
find . -size +10M
- 7日以内に更新されたファイル
find . -mtime -7
- 所有者がuserのファイル
find . -user user
- パーミッションが777のファイル
find . -perm 777
- 検索結果を削除
find . -name "*.bak" -delete
- 検索結果にコマンドを実行
find . -name "*.log" -exec gzip {} \;
応用テクニック
- 複数条件の組み合わせ
find . -type f -name "*.txt" -size +1M
- 条件の否定(NOT)
find . ! -name "*.txt"
- OR条件の指定
find . $$ -name "*.jpg" -o -name "*.png" $$
- 検索結果をxargsでパイプ処理
find . -name "*.tmp" | xargs rm -f
- 空ファイル・空ディレクトリの検索
find . -empty
- 特定ディレクトリを除外
find . -path "./backup" -prune -o -name "*.conf" -print
よくあるエラーと対処法
- Permission denied(権限エラー)
→sudo
を付けて実行、または2>/dev/null
でエラー出力を無視 - スペースや特殊文字を含むファイル名の扱い
→-print0
とxargs -0
の組み合わせで安全に処理
6. まとめ
findコマンドは、Linux環境でのファイル管理や運用を効率化する強力なツールです。基本的な使い方から応用までマスターすることで、日々の作業が大幅に効率化されます。まずはよく使う構文から試してみましょう
コメント