【決定版】Linux ファイル・ディレクトリ検索 findコマンド徹底まとめ

この記事は約4分で読めます。
スポンサーリンク

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でエラー出力を無視
  • スペースや特殊文字を含むファイル名の扱い
    → -print0xargs -0の組み合わせで安全に処理

6. まとめ

findコマンドは、Linux環境でのファイル管理や運用を効率化する強力なツールです。基本的な使い方から応用までマスターすることで、日々の作業が大幅に効率化されます。まずはよく使う構文から試してみましょう

コメント

タイトルとURLをコピーしました