• ベストアンサー

Ruby プログラミング

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

  • Ruby
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
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

  • Rubyの入門書について

    Rubyの入門書について Rubyの勉強を始めて2週間、いま、ある本でつまずいています。今使っている本は「Ruby2 さまざまなデータとプログラミング」という本を使っているのですが、この本の一巻はまだわかりやすかったのですが、この本は急に説明が投げやりな感じがします。メソッドの説明で「自分で調べてください」だの、問題の解説がほとんどないなど、非常に不親切な感じがします。3日かけても1ページ進まないことなどざらで、自分にはこの本は早かったんだろうかと思い始めました。一方で、ここで逃げてしまってはいけないという風にも思います。ちなみに、私のRubyに関する知識は今使ってる本と、その一巻だけです。 そこで、質問です。特に「たのしいRuby」をやった時点でプログラム素人だった方に聞きたいのですが、「たのしいRuby」を一通りやるのにどのくらいの時間がかかりましたか? また、「Ruby2さまざまなデータとプログラミング」をもっている方、この本は本当に初心者向けなんでしょうか? 最後にこの質問を見てくれた皆様に質問です。短かいにもかかわらずわからないプログラムを見て、数日も考え続けるのは時間の無駄でしょうか?それともみんな初めはこんなもんなんでしょうか?

    • ベストアンサー
    • Ruby
  • Ruby の実行について

    Ruby初心者です。 メモ帳で puts "hello world"と打ち、名前をsample.rbにし、c:\Users\rbというファイルに保存しました。次にコマンドプロンプトで c:\Users\rb>ruby sample.rb と入力したんですが、'ruby'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。といわれました。 どうすればいいのですか? 本を見てもネット上のサイトをみても >ruby ●●.rb なんです。

    • ベストアンサー
    • Ruby
  • Ruby オススメの本

    Rubyを勉強している初心者ですが、オススメの本とかありますでしょうか? 「パーフェクトRuby」を買おうか、一番新しい本である「楽しいRuby」を買うか、Rubyの開発者であるまつもとゆきひろさん著の「プログラミング言語Ruby」を買うのが良いのか、それとも、他にオススメの本がありますでしょうか? RubyからRuby on Railsへと繋げていきたいと思っているのですが、オススメの本がありましたら、教えて下さい。 よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • Rubyの.soについて

    Rubyの.soについて 拡張子が.soファイルがあるのですが、これはなんなのでしょうか。 また、Rubyのファイルは基本テキスト形式ですが、C++のプログラムで扱う場合、配布する際には、バイナリ形式にすると思うのですが、それはどうすればいいのでしょうか。(間違ってたらすいません) さらに、Ruby関係でおすすめの本がありましたら、教えて頂けると幸いです。ちなみにC++はある程度できます。 長文失礼しました。

    • ベストアンサー
    • Ruby
  • Ruby1.87のインストールについて

    Ruby1.87のインストールについて いままで1.9を使っていたのですが、pingというメソッドを使ってみたくて1.87をインストールしなおしました。 コンソールのプロパティを開いて環境変数から作業フォルダというところを設定するといちいち毎回フォルダをcdで動かなくてもいいと本にあったので以下のように設定しました。 C:\Rubytest そして、Rubytestのなかにtest.rbというファイルを作り、ruby test.rbで実行したのですがうまくできませんでした、エラー文は以下のとおりです。 ruby: no such file to load --ubygems(LoadError) 使用OSはwindows7で、1.9はアンインストール済みです。フォルダとファイルは間違いなく存在しています。拡張子もつけ間違えていません。 インストールした後、RubyのファイルをD:ドライブに一度動かしたのがまずかったのでしょうか? 原因と対処法が知りたいです。

    • ベストアンサー
    • Ruby
  • プログラミング初心者です

    学校の授業で、コマンドプロント上で簡単なプログラミング(for文、while文、if文、関数作成)といった簡単なものは実習したことがあります。 ただ、プログラム本文の前の、定義付けや、データの受け渡、データの種類といったことはほとんど理解できていません。 さきざき、波形を処理するようなプログラムをいじるかもしれないので(csvファイルからFFT処理、マップ作成、データ結合など)、勉強しておきたいと考えています。 ・プログラムを開発する環境の詳しい説明(コンパイラ、実行の仕方などが詳しく書かれている) ・プログラミングの方法 ・ファイルやデータの種類の説明 など プログラミング+開発環境全体について初心者でもわかるような詳しい説明がされている書籍を紹介してほしいのですが。 使ってみてわかりやすかったと思われる本でも教えてください。 本当にど素人なので質問内容が尻切れの内容でしたら申し訳ないです。 色々間違っているかもしれないので補足がありましたらよろしくお願いします。

  • rsyncをrubyのプログラムで使いたい。

    rubyである条件を満たせばrsyncでバックアップするというプログラムを作っています。 if 条件  バックアップ end 上記のような簡単なプログラムな場合のとき if 条件  rsync -a -e ssh バックアップ元 バックアップ先 end というようにrsyncをシェルスクリプトのコマンドのように使うことはできないですよね? ちなみに今作っているプログラムはシェルスクリプトではつくってません。 そうなるとrsyncをするプログラムをif文に書くしかないんですかね? cygwinでrubyをインストールして使っているのですが、パッケージの中にはrsync.rbのようなものがないようなのでやっぱり使えないってことですよね? ちなみに初心者なんでrsyncをするプログラムをつくれるとは思えないです。 なんか簡単な方法はないですか?? ご教授をよろしくお願いします。

  • rubyのデータ読み取りについて

    rubyで100行からなる "山田" : 173, 60 ; 176, 61 のようなデータを読み取り、kekka_fileに書き出すとすれば、冒頭で file=open("data","r") この文を書き、この後は、どういうプログラムを組めばよいでしょうか? while文を使えばよいのでしょうか? 大雑把な質問で、すいません 回答宜しくお願いします。

  • Rubyのtimesメソッドから抜けたい

    Rubyの初心者です。 timesメソッドの中にif文を入れて,もし条件を満たしていれば timesメソッドから抜けたいのですが,どうすればいいのでしょうか。 if文の中でbreakしてもtimesメソッドからは抜けられなかったので質問しました。 どうかよろしくお願いします。

  • [初心者]rubyでgemが使えません

    ruby1.9.2をインストールをしたあと、rubygems1.5.0をダウンロードして ruby setup.rb でインストールしたのですが、 gem -v をしても反応がありません。No such file or directoryといわれてしまいます。環境変数をいろいろと変えてみましたがやはりダメでした。windowsだとやり方が違うのでしょうか。 検索しても答えが見つからなかったので質問させていただきました。初心者ですがよろしくお願い致します。 [os] windows xp [ruby] ruby 1.9.2p136 (2010-12-25) [i386-mingw32] [エラーメッセージ] C:\Ruby192\bin\ruby.exe: No such file or directory -- /cygdrive/c/Ruby192/bin/gem (LoadError)

    • ベストアンサー
    • Ruby

専門家に質問してみよう