findコマンドの基本

1月 2, 2010

例によって使わないとすぐに忘れてしまう、findコマンドの使用方法やオプションをメモ。
シェルに組み込むことなんかよくあるだろうし、いいかげん覚えないと、、、

基本構文
find [検索開始パス名] (option) [検索種別] [処理方法]


指定したディレクトリ以下の階層を対象に検索する。
カレントディレクトリ以下を検索するのであれば、「.」を指定すればよい。
/ (ルート)を指定するとシステム全体を検索する。一般ユーザが実行すると、
膨大な”Permission denied”エラーが出力されるはめになる。

検索種別
-name  指定したパターンにあう名前を持つファイルに一致
-iname  -nameと同じだが、大文字と小文字の区別を無視する
-ctime -n 〜時間以内にステータスが変更されたファイルに一致
-cmin -n  〜分以内にステータスが変更されたファィルに一致
-mtime -n 〜日以内に修正されたファイルに一致
-atime -n 〜以内にアクセスされたファイルに一致
※nを指定すると丁度、+nとすると〜以前、となる。
-type 指定した種類のファイルと一致
※dを指定するとディレクトリ、f を指定すると普通のファイルと一致
-user ファイルのオーナーと一致。名前はユーザIDでも可
-perm 指定したアクセス権を持つファイルと一致
-not  〜でないファイルと一致
-size 指定したサイズと一致
-depth ディレクトリ本体の前にディレクトリの中身を先に評価する
-maxdepth n 検索対象をn階層に指定する
A -or B AまたはB
A -and B AかつB


ctime、mtimeの違いと時間の指定方法だとか、-sizeの指定など、ここでは
詳しく書かないがちょっと面倒だ。以下に参考サイトをメモしておこう。
findコマンドのatimeとctimeとmtime
find ファイルを検索する(UNIXの部屋)

処理方法
-print  検出結果を相対パスで表示
-ls  一致したファイルに対する結果として”ls -l “を書き出す
-exec 検出された実行ファイルをそのまま実行する
※エスケーブされたセミコロン(¥;)までをコマンドラインとして認識する。


コマンド例
カレントディレクトリ以下のhtml ファイルを検索する
# find . -name “*.html” -print

Documents ディレクトリ内のhtmlファイルを検索
# find Documents/ -name “*.html” -print

10分以内に変更されたファイルを検索
# find . -cmin -10 -print

30分以内に変更された、ルートがオーナーのファイルを検索
# find / -cmin -30 -type f -user root -print

カレントディレクトリ以下で(コマンドを実行している)ユーザが書き込み
権限を持っているファイルを検索し、ls -lの結果を出力
$ find . -type f -user $USER -perm +u=w -ls



Categories: Linuxコマンド