【コマンド詳細】findの使い方とオプションまとめ

  • URLをコピーしました!

findコマンド概要

findコマンドは、ファイルシステム内で条件に合致するファイルや
ディレクトリを検索するための非常に強力なツールです。
指定したパス以下にあるファイルやディレクトリをさまざまな条件で検索できるため、
業務でのファイル操作やメンテナンスにおいて非常に有用です。

findコマンド主要オプション一覧

オプション説明使用例
-nameファイルやディレクトリ名で検索します(大文字小文字区別あり)。find /path/to/search -name "example.txt"
-iname名前で検索します(大文字小文字を区別せずに検索)。find /path/to/search -iname "example.txt"
-typeファイルの種類(ディレクトリ、通常ファイルなど)でフィルタリング。find /path/to/search -type d
-sizeファイルのサイズで検索します。find /path/to/search -size +500M
-mtime最終更新日からの日数で検索します。find /path/to/search -mtime -7
-atime最終アクセス日からの日数で検索します。find /path/to/search -atime +30
-user指定ユーザーが所有するファイルを検索します。find /path/to/search -user username
-group指定グループが所有するファイルを検索します。find /path/to/search -group groupname
-perm指定のパーミッションを持つファイルを検索します。find /path/to/search -perm 755
-exec検索結果に対してコマンドを実行します。find /path/to/search -name "*.log" -exec rm {} \;
-maxdepth検索の深さを制限します(最大レベル)。find /path/to/search -maxdepth 2
-mindepth検索の深さを制限します(最低レベル)。find /path/to/search -mindepth 3

基本的な構文

find [検索パス] [条件] [アクション]
  • 検索パス:検索を開始するディレクトリを指定します。/はルートディレクトリ全体、/home/userはユーザーディレクトリから検索を開始します。
  • 条件:名前、サイズ、更新日時など、検索に使用する条件です。
  • アクション:見つかったファイルに対して実行する操作です(例:削除、表示、移動など)。

主要なオプションと使用例

以下に、findの主なオプションをまとめ、それぞれの業務での使用例と共に紹介します。

-name / -iname:名前で検索

  • -nameオプションは指定した名前と完全一致するファイルやディレクトリを検索します。-inameは大文字小文字を区別せずに検索を行います。
find /path/to/search -name "example.txt"
find /path/to/search -iname "example.txt"

使用例:特定の設定ファイルを探す際に利用します。
例えば、find /etc -name "config.conf"で設定ファイルを検索します。

-type:ファイルタイプで検索

  • -typeオプションはファイルの種類(ディレクトリ、通常ファイル、シンボリックリンクなど)でフィルタリングします。
find /path/to/search -type d   # ディレクトリのみ
find /path/to/search -type f   # 通常ファイルのみ

使用例:バックアップスクリプトでディレクトリだけを探す場合や、
大量のファイルが存在する中から通常ファイルだけを対象に処理を行いたい場合に使用します。

-size:サイズで検索

  • -sizeオプションを使うと、指定したサイズのファイルを検索できます。サイズの単位としてk(KB)、M(MB)、G(GB)などが使用可能です。
find /path/to/search -size +500M   # 500MB以上のファイル
find /path/to/search -size -10k    # 10KB未満のファイル

使用例:ディスク容量を圧迫している大きなファイルを発見する際に有効です。
例えば、find / -size +1Gで1GB以上のファイルを特定できます。

-mtime / -atime:更新・アクセス日時で検索

  • -mtimeは最終更新日からの日数を、-atimeは最終アクセス日からの日数を基準に検索を行います。
find /path/to/search -mtime -7    # 過去7日以内に更新されたファイル
find /path/to/search -atime +30   # 30日以上アクセスされていないファイル

使用例:一定期間アクセスがないファイルを削除してディスクを整理する場合や、
最近更新されたファイルを確認する際に役立ちます。

-user / -group:所有者やグループで検索

  • -userオプションは指定されたユーザーが所有するファイルを、-groupオプションは指定されたグループに属するファイルを検索します。
find /path/to/search -user username
find /path/to/search -group groupname

使用例:特定のユーザーが管理しているファイルを確認したり、
特定のグループが所有するファイルだけを検索して整理する場面で利用できます。

-perm:パーミッションで検索

  • -permオプションを使うと、指定したパーミッションを持つファイルやディレクトリを検索できます。
find /path/to/search -perm 755
find /path/to/search -perm -4000  # SUIDビットが設定されているファイル

使用例:セキュリティ監査で特定のパーミッション
(例えばSUIDビットがセットされたファイルなど)を確認する場合に便利です。

-exec:検索結果に対してコマンドを実行

  • -execオプションを使うと、見つかったファイルに対して特定のコマンドを実行できます。終了には{} \;を付けます。
find /path/to/search -name "*.log" -exec rm {} \;

使用例:例えば、一定期間前のログファイルを削除したい場合に、-execを使って直接削除を行えます。
この場合、findの検索結果に対して即座にアクションが実行されます。

-maxdepth / -mindepth:検索の深さを制限

  • -maxdepthは検索の深さを最大レベルで指定し、-mindepthは最低レベルで指定します。
find /path/to/search -maxdepth 2 -name "*.conf"
find /path/to/search -mindepth 3 -type f

使用例:特定のディレクトリ以下にあるファイルだけを探したい場合に役立ちます。
例えば、find /var/log -maxdepth 1 -name "*.log"は、/var/log直下のログファイルのみを対象にします。

業務での活用例

ディスククリーンアップ
大量のログファイルや古いファイルがディスクスペースを占有している場合、
findコマンドでこれらのファイルを一括削除することで、効率的にクリーンアップが行えます。

find /var/log -type f -name "*.log" -mtime +30 -exec rm {} \;

セキュリティチェック
特殊なパーミッション(SUIDビットやSGIDビット)が設定されたファイルを特定してセキュリティリスクを評価します。

find / -perm -4000 -type f

バックアップの準備
最近更新されたファイルのみをバックアップ対象としたい場合にもfindコマンドが役立ちます。

find /home/user -mtime -7 -type f -exec cp {} /backup/ \;