find - ファイルやディレクトリを検索する

findコマンド
機能:ファイルやディレクトリを検索する。
書式:find[検索を開始するディレクトリ][検索方法(ファイル名など)]
 ※[ ]内はなくても良い

■単にファイルを検索するだけならlocateコマンドを使ったほうが高速である。findはさまざまな検索を行う場合に使用する。

オプション 機能
-name ファイル名 指定したファイル名を検索
-atime[+-]数字(日) 指定した数字の日にアクセスしたファイルを検索。
「-atime 3」は3日前
「-atime -3」は3日前より後
「-atime +3」は3日前より前にアクセスされたファイル。
-mtime[+-]数字(日) 上記条件で、修正されたファイル
-mmin[+-]数字(分) 上記条件で、単位が分
-groupe グループ名 指定したグループに属するファイルを検索
-user ユーザ名 指定したユーザが所有者のファイル
-newer ファイルのパス名 指定したファイルの更新日時よりも後に修正したファイルを検索
-perm パーミッション 指定したパーミッションが設定されているファイルを検索
-size [+-]数字(ファイルサイズ) 指定したサイズのファイルを検索「-size 10」は10バイト、「-size +10」は10バイト以上
-type タイプ 指定したタイプのファイルを検索。タイプには「d」(ディレクトリ)、「f」(ファイル)、「l」(シンボリックリンク)などがある。

ファイルのみで、本日中に更新されたファイル
$find . -type f -mtime -1

先頭がアルファベットの大文字で始まり、拡張子が「.gif」というファイル
$find . -name "[A-Z]*.gif"

■findで検索したファイルを次のコマンドの引数にする。
pictureディレクトリ以下を対象に、ファイルサイズが400KB以上のファイルを検索。検索されたファイルを「ls -lh」コマンドを実行する。
$find picture/ -size +400k -exec ls -lh {} \;
※\はバックスラッシュ。-execに続くコマンドの終わり。

testdataディレクトリから「sample」という文字列を内容に含むファイルを検索する。
$find testdata/ -type f -print0 | xargs -0 grep -n "sample"
xargsを参照