2007.06.26 Tuesday
7日より前のログは消したいんだけど。。。
同僚からヘルプ依頼。 「7日より前のログをうまく消す方法ないかな。 ログは毎日、日付で分けてるんだけど消す事考えてなかった。 シェルスクリプトかなんかで欲しい。すぐ欲しいんだけど。」 「了解。rubyで作っていい?」 「いいよ。Linuxだし。」 「OK。ちょっとつくるよ。10分頂戴。」 というので作ったのが、下記。 別のどっかで役に立つかもという事で残しときます。 まだソースは勢いで作ったので、改善の余地はあるけど、 さくさくで作れてコンパイルもないので、 こういう時は非常に便利なRubyだなと。
#!/usr/bin/ruby #消したいファイルが存在するフォルダを指定 FOLDER_PATH = '/home/xxxx/log' #何日以前のものを消すか指定 DEL_FILE_DAY = 7 #設定日付だけ、今の時間からマイナス日付してTimeオブジェクト化する delDay = Time.now delDay = delDay - 24*60*60*DEL_FILE_DAY.to_i #消したいフォルダの中身を処理 Dir::open(FOLDER_PATH) {|d| d.each{ |f| if FileTest.directory?(f)==false #ディレクトリではないものだけを処理 if File::mtime(FOLDER_PATH + '/' + f.to_s) < delDay #DEL_FILE_DAY以前のファイルを消す File::delete(FOLDER_PATH + '/' + f.to_s) end end } }