重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

※Rubyでお願い致します。
※1文1文説明を付けてくださるとありがたいです。。

どうかお願い致します。。。。。

A 回答 (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時間おきに実行されます。このあたりは適当にググってください。
    • good
    • 0

???


cron の書き方を聞いてるんじゃなくて Ruby単体でそういう動作をするものを作って欲しいって話・・・だよね?

考え方としては
・ファイルの日付を取得
・ファイルの一覧を作成する
・日付を比較する
かな。
これらを組み合わせればそれなりに形になると思う
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!