概要
名前、種類、時刻、サイズ、権限などの条件でファイルを検索します。検索だけでなく、見つかった対象へ処理をつなげられるのが強みです。
基本構文
find [開始位置 ...] [式]詳細解説
findは、Linuxのファイル探索で中心になる強力なコマンドです。単なる名前検索だけでなく、種類、更新時刻、サイズ、所有者、パーミッションなど多くの条件を組み合わせて対象を絞り込めます。
さらに、見つかった結果へ-execで処理をつなげたり、print0で安全に他コマンドへ渡したりできるため、検索と一括処理を同時に行う実務の土台になります。
一方で、パターン展開の引用忘れ、探索開始位置の誤指定、-execの使い方の誤りは事故につながります。特に削除や権限変更を伴う処理では、まず-printで対象確認を行うのが基本です。
このコマンドを使う場面
特定名のファイルを探したい時、最近更新されたファイルだけ探したい時、大量ファイルへ条件付きで処理を行いたい時に使います。
まず安全に試す方法
1. find . -maxdepth 1 -type f
2. find . -name "*.conf"
3. find /etc -maxdepth 1 -type f -name "*.conf"
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
テスト用ファイルを数個作成し、find . -nameで絞り込みます。
-
直近で作ったファイルに対してfind . -mtime -1を試し、条件式に慣れます。
資格試験との関連
-
LinuC レベル1
範囲: 1.02 ファイル・ディレクトリの操作と管理根拠: officialLinuCレベル1では、基本的なファイル管理、リンク、ファイル配置と検索が主要範囲です。findはその中核です。
-
LPIC-1
範囲: 104.7 システムファイルの検索と正しい配置根拠: officialLPIC-1では、ファイル配置、コマンド探索、基本的なファイル操作と確認が求められます。findはその土台になります。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、findはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
find . -maxdepth 1 -type f./a.txt ./b.txt -
find /etc -maxdepth 1 -type f -name "*.conf"/etc/xxx.conf など
戻り値コード
- 0 探索が正常に完了しました。
- >0 権限不足、開始位置不正、式の誤りなどで失敗しました。
使用例
find . -name "*.log"find . -type f -mtime -1find /var/log -type f -size +10Mfind . -type f -print0
よくあるエラー
-
find . -name *.logで意図しない結果になった 原因: シェルが先にパターン展開してしまいました。対処: パターンは"*.log"のように引用します。
-
-exec rmを使って消し過ぎた 原因: 対象確認なしで破壊処理をつなげたためです。対処: まず-printやlsで対象確認し、必要ならバックアップ後に実行します。
導入・互換性情報
POSIXで基本機能は定義されていますが、GNU findutilsには便利な拡張が多くあります。-print0、-delete、-printfなどは実装差に注意が必要です。
- Debian GNU/Linux / 13 / GNU findutils 4.10.0 / Bash 5.2.37
注意点 / セキュリティリスク
検索結果へそのまま削除や変更処理をつなぐと危険です。まず-printで対象確認し、空白や改行を含む名前に備えて-print0とxargs -0の組み合わせも理解しておく必要があります。
FAQ
-
Q. locateとの違いは何ですか。 A. findは実際のファイルシステムを走査し、locateは事前作成済み索引を検索します。findのほうが条件指定と正確性に優れます。
-
Q. 安全に後続コマンドへ渡すにはどうすればよいですか。 A. 空白や改行を含む名前に備え、find -print0とxargs -0の組み合わせが定番です。
関連用語
参照リンク
- カテゴリー: File And Directory
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎