特定のディレクトリィにあるファイルの中から、特定のキーワードが記載されたファイルを探し出すには、下記のコマンドを使います。
/usr/local/apache/htdocs/xoops/ からWELCOMEという単語が
あるファイルを探す場合、
例)find /usr/local/apache/htdocs/xoops/ -type f -exec grep "WELCOME" {} \;
例)find /usr/local/apache/htdocs/xoops/ -type f -exec egrep "WELCOME" /dev/null {} \;
2つの例は、検索した文字列の横にファイル名を表示するか
どうかの違いである。
{}だけ指定すると、findはgrepに対して1つずつファイル名
を渡す。検索するファイル名が1つだけなので、grepコマンド
はユーザーがすでに知っているファイルだと仮定する。
/dev/nullと指定すると、findは/dev/nullと処理中のファイル
の2つをgrepに渡す。そうすると、どちらのファイルかわかる
ように報告するべきだと判断する。
/dev/null には何も入っていないので、表示に影響はない。
(注){}と\;の間には空白が必要。
○主なオプション
-name ファイル名及びディレクトリ名にマッチするものを表示
-iname -nameと同じだが、大文字小文字を区別しない
-regex ファイル名が正規表現にマッチするものを表示
-iregex regexと同じだが、大文字小文字を区別しない
-type ファイルタイプを指定。タイプにはd(ディレクトリ)、f(ファイル)、l(シンボリックリンク)を指定
-emtpy ファイルが0byteもしくは中身のないディレクトリを表示
-size ファイルのサイズで検索。通常kオプションをつけてキロバイトにて指定
○オプション使用例
-空のファイルを検索して削除する。
(カレントディレクトリィ以下)
# find . -empty -exec rm {} \;
上記の方法ではユーザーに確認を求めないですが、下記のように
するとユーザーに対して、削除しても良いかどうかを聞いてきま
す。
# find . -empty -ok rm {} \;
-1000kを超えるファイルを検索する。
# find ./ -size +1000k
-ファイル所有者がtomのユーザーを検索。
# find ./ -user tom
-拡張子PDFファイルの検索と容量の表示
# find / -name *.PDF -type f | xargs ls -l | awk '{print $9;}'
-特定ディレクトリィの大文字・小文字のjpgファイル以外を削除したい。
# find /home/hogehoge/test -not -iname '*.jpg' -type f -exec rm {} \;
-過去12時間以内に更新されたファイルを探す
# find ./ -mtime -0.5
-過去から3日前までの更新ファイルを探す
# find ./ -mtime +2
-100日以上アクセスされていないファイルのリストを作成するには、下記のコマンドで探す。
# find ./ -atime +100 -print