findコマンドのメモ
はじめに
find
コマンドは、指定したディレクトリ以下を再帰的に探し、ファイルやディレクトリを指定した条件で検索・処理する Linux のコマンドです。
基本操作
find
コマンドは下記の形式で利用することができます。
find [options] [path] [expression]
よく利用するオプションを説明します。
-name pattern
- ファイル名をパターン(ワイルドカード含む)で検索
-iname pattern
- 大文字/小文字を無視した名前検索
-type [f|d|l|p|s|c|b]
- ファイルの種類で絞り込み:f=通常ファイル、d=ディレクトリ、l=シンボリックリンクなど
-size [+/-]N[c/k/M/G]
- ファイルサイズで検索:
+
より大きい、-
より小さい、単位指定可能
- ファイルサイズで検索:
-mtime/-atime N
- 最終修正日(mtime)/アクセス日(atime)で絞り込み
-user username
/-group groupname
- 所有者やグループで絞り込み
-empty
- 空のファイル・ディレクトリを検索
-maxdepth N
/-mindepth N
- 検索の深さを制限
-delete
- マッチしたファイルを削除
- 実際に削除する前にオプション無しで削除対象を確認することをおすすめします
-exec COMMAND {} \;
/{} +
- 検索結果に対してコマンドを実行
使用例まとめ
# .txt ファイルを名前で検索
find . -type f -name "*.txt"
# 過去 7 日以内に更新された 10MB より大きいファイル
find . -type f -mtime -7 -size +10M
# 空のディレクトリを削除
find . -type d -empty -delete
# 特定所有者が持つファイルを探して削除
find /home -user bob -type f -mtime +30 -exec rm {} \;