- ベストアンサー
Ruby プログラミング
"cronで /dog/cat/bird の中の一日より前の古いファイルを消す"というプログラムを作っていただけませんか? 完全に初心者で本を見ながらなんですがどうしていいか分かりません。。 ※Rubyでお願い致します。 ※1文1文説明を付けてくださるとありがたいです。。 どうかお願い致します。。。。。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#!/usr/bin/ruby -Ku # -*- coding:utf-8 -*- # 今から ruby でスクリプトを書きます、そのファイルで使用するエンコーディングは utf-8 ですよ、という宣言。 directory = '/dog/cat/bird' Dir.new(directory).each { |file| # ここまでで、'/dog/cat/bird' というディレクトリをまず指定し、 # そのディレクトリの中のファイルそれぞれ (each) に対して操作を行うという宣言 if Time.now - File.atime(file) > 60*60*24 # もし最終アクセス時間と現在時刻との差が24時間以上なら if File.ftype(file) == 'file' # もしそのファイルが普通のファイルなら #File.delete(file) # 本番用 puts file # 確認用 elsif File.ftype(file) == 'directory' # もしそのファイルがディレクトリであれば #Dir.rmdir(file) # 本番用 puts file # 確認用 end end } 以上です。ここの投稿はスペースが無視されちゃうので残念ですね。 エンコーディングは UTF-8 で保存してください。(たぶん UTF-8 じゃなくても動く気がするけど) たぶんこんな感じです。ファイルを消しちゃったらごみ箱に行くわけではないのでちゃんと確認してから本番用のほうに変えてください。 http://www.ruby-lang.org/ja/man/html/File.html atime というのはアクセス時間のことです。ファイル作成時間にしたければ ctime に変えてください。 cron の設定は、crontab -e でテキストエディタが起動しますので、 0 * * * * /usr/bin/ruby 保存したファイルのパス と書いて保存すれば1時間おきに実行されます。このあたりは適当にググってください。
その他の回答 (1)
- SAYKA
- ベストアンサー率34% (944/2776)
??? cron の書き方を聞いてるんじゃなくて Ruby単体でそういう動作をするものを作って欲しいって話・・・だよね? 考え方としては ・ファイルの日付を取得 ・ファイルの一覧を作成する ・日付を比較する かな。 これらを組み合わせればそれなりに形になると思う