ファイルを検索するコマンド。
find [path...] [expression]
与えられた起点ディレクトリ以下からファイルを検索する。
評価式 (expression)
評価式は
- オプション
- 判別式
- アクション
の3つからなる。
オプションは find コマンド全体の動作についての指定。常に真を返す。 判別式とアクションは真または偽を返す。
各ファイルについて評価式の評価を行なう。
判別式の例
- -name __pattern__
ファイル名がパターン pattern にマッチすれば真。
例: ホームディレクトリ以下から ~ で終わるファイルを探す
find ~ -name '*~'
- -size __n__[bckw]
ファイルサイズによる指定。
-size 100k # 100KB ちょうどのファイル
-size -100k # 100KB より小さいファイル
-size +100k # 100KB より大きいファイル
- -type __c__
ファイルタイプによる指定。
f 通常のファイル
d ディレクトリ
l シンボリックリンク
...
- -ctime n
- -mtime n
- -atime n
ファイルの作成日時・更新日時・アクセス日時が n*24 時間前
+n は、(n+1)*24 時間前以前の意味。
-2d -1d now
--2-----|------1-----|------0-----|------
/ \
<------/ `-------->
+1 -1
http://sonic64.com/2005-07-06.html
アクションの例
ファイル名をフルパスで標準出力に表示し、改行文字を付ける。
- -print0
ファイル名をフルパスで標準出力に表示し、ヌル文字を付ける。
- -exec __command__ ;
コマンドを実行する。ファイル名は {} で指定する。 シェルのメタキャラクタをエスケープするのに注意。
- -prune
ディレクトリを降りない。
例: .svn 以下を除く
find . -type d -name .svn -prune -o -print
演算子
- ( expr )
括弧。( ) がシェルのメタキャラクターなのでエスケープする必要があるのに注意。
- ! expr expr
- -not expr
NOT: 真偽の反転。! もエスケープする必要がある。
- expr1 expr2
- expr1 -a expr2
- expr1 -and expr2
AND: expr1 が偽なら expr2 は評価しない
- expr1 -o expr2
- expr1 -or expr2
OR: expr1 が真なら expr2 は評価しない
- expr1 , expr2
LIST: expr1 と expr2 の両方を評価し、全体の値は expr2。