古い記事
ランダムジャンプ
新しい記事
良く使う find での処理についてメモ。

ディスク溢れ対策でディレクトリ中のファイルを更新日時条件にそって消したいことは多い。
そういうときは find が便利。

例えば3日よりも古いファイルを消す方法。
これを crontab に登録しておく。
find /home/yto/log/ -type f -mtime +3 -exec rm {} \;

オプション mtime の引数の単位は日。
mmin オプションでは秒単位。
数字の前の「+」は「~よりも前」、「-」は「~よりも後」。
「+3d」は3日より古い、「-30m」は30分以内の更新。

exec オプションの rm がファイルを消す命令。
実行前には print オプション(ファイル名を表示するだけ)でどれが消されるのかを確認しておくのが良い。
日時条件の単位を間違えて全部消しちゃうトラブルが多いので。
find /home/yto/log/ -type f -mtime +3d -print

追記: ファイル名の正規表現。"-E" と "-regex"
find -E /home/yto/log/ -mtime +3d -type f -regex '.*([12][0-9]|0[1-9]).txt' -exec rm {} \;

ref.
- [を] 指定されたファイルよりも更新日時が古いファイルを全部消す find レシピ[2008-09-15-6]