findコマンドの基本
例によって使わないとすぐに忘れてしまう、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