a-Column

【UNIX】findコマンド

特定のディレクトリィにあるファイルの中から、特定のキーワードが記載されたファイルを探し出すには、下記のコマンドを使います。

/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


Last Update : 2019年05月24日 (金) 01:49