findコマンド


findコマンドの基本と活用法

findコマンドは、ファイルシステム内でファイルやディレクトリを検索するための強力なツールです。様々な条件に基づいて検索を行い、結果に対して操作を実行することができます。

基本構文

find [パス] [オプション] [条件] [アクション]

主な使用例

  1. 名前で検索
   find /home -name "*.txt"

/homeディレクトリ以下の.txtファイルを検索します。

  1. タイプで検索
   find /var -type d

/varディレクトリ以下のディレクトリを検索します。

  1. サイズで検索
   find / -size +100M

ルートディレクトリ以下の100MB以上のファイルを検索します。

  1. 最終更新日時で検索
   find /home -mtime -7

/homeディレクトリ以下の7日以内に更新されたファイルを検索します。

  1. パーミッションで検索
   find /etc -perm 644

/etcディレクトリ以下のパーミッションが644のファイルを検索します。

  1. 所有者で検索
   find /home -user john

/homeディレクトリ以下のjohnが所有するファイルを検索します。

  1. 複数条件の組み合わせ
   find /home -name "*.log" -size +10M -and -mtime +30

/homeディレクトリ以下の、.logファイルで、10MB以上、かつ30日以上前に更新されたファイルを検索します。

  1. 検索結果に対するアクション
   find /tmp -name "*.tmp" -delete

/tmpディレクトリ以下の.tmpファイルを検索して削除します。

  1. 検索結果に対してコマンドを実行
   find /home -name "*.jpg" -exec chmod 644 {} \;

/homeディレクトリ以下の.jpgファイルを検索し、パーミッションを644に変更します。

以下のようにすると処理が速いという情報もあります1

   find /home -name "*.jpg" -exec chmod 644 {} +
  1. 深さを指定して検索
   find /home -maxdepth 2 -name "*.conf"

/homeディレクトリから2階層までの深さで.confファイルを検索します。

注意点

  • 大規模なファイルシステムでの検索は時間がかかる場合があります。
  • rootユーザーでない場合、アクセス権限のないディレクトリやファイルは検索結果に含まれません。
  • -delete-execオプションを使用する際は、意図しないファイルを操作しないよう注意が必要です。
  • find|xargsで使用する場合は特別な書き方があります。manページを参照して下さい。23

findコマンドは非常に柔軟で強力なツールです。これらの基本的な使用法を理解し、必要に応じてマニュアル(man find)を参照することで、効率的なファイル管理や検索が可能になります。

  1. POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! ↩︎
  2. man 1 find ↩︎
  3. findコマンドの使い方を簡単に理解するための7つのルール+実践的な知識 ↩︎