• ベストアンサー

Ruby プログラミング

"cronで /dog/cat/bird の中の一日より前の古いファイルを消す"というプログラムを作っていただけませんか? 完全に初心者で本を見ながらなんですがどうしていいか分かりません。。 ※Rubyでお願い致します。 ※1文1文説明を付けてくださるとありがたいです。。 どうかお願い致します。。。。。

質問者が選んだベストアンサー

  • ベストアンサー
noname#87714
noname#87714
回答No.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)
回答No.1

??? cron の書き方を聞いてるんじゃなくて Ruby単体でそういう動作をするものを作って欲しいって話・・・だよね? 考え方としては ・ファイルの日付を取得 ・ファイルの一覧を作成する ・日付を比較する かな。 これらを組み合わせればそれなりに形になると思う

関連するQ&A

専門家に質問してみよう