Rubyでファイルの名前をリネイムする方法

このQ&Aのポイント
  • Rubyを使ってファイル名を変更する方法について教えてください。
  • Photo1ディレクトリ内のファイル名をPhoto2ディレクトリにリネイムする手順を教えてください。
  • リネイム後にファイル名が連番になるようにする方法を教えてください。
回答を見る
  • ベストアンサー

Rubyでファイルの名前をリネイムする方法

下記のように、Photo1ディレクトリに、001. 002 ・・・とサプディレクトリがあり、それぞれの中にjpgファイルが連続してある場合 (変更前) についての質問です。 コマンドプロンプトよりRubyを使い、下記の図のようにPhoto1のリネイムを行ったPhoto2を新たに作成したいのですが、どのように書けばよいのか教えてください。宜しくお願いします。 (変更前) Photo01 +------ 001 |      +-- 1.jpg |      +-- 2.jpg |      +-- 3.jpg | +------ 002 |      +-- 1.jpg |      +-- 2.jpg |      +-- 3.jpg | +------ 003 |      +-- 1.jpg |      +-- 2.jpg |      +-- 3.jpg ~ (変更後) Photo02 +-- 001.jpg +-- 002.jpg +-- 003.jpg +-- 004.jpg +-- 005.jpg +-- 006.jpg +-- 007.jpg +-- 008.jpg +-- 009.jpg +   ~

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

テストしてませんが、 n=0 Dir.glob("/Photo01/*/*.jpg").each do |file| File.rename(file, "/Photo02/%03d.jpg" % (n+=1)) end

DODOOffs
質問者

お礼

ありがとうございました。こんなに短い行で書けるとは思いませんでした。 自分でも挑戦したのですが、不完全で、さらには20行ぐらいになってしまったので、とても参考になります。

関連するQ&A

  • ruby : no such file of・・・

    ruby-2.2 consoleでコマンドプロンプトを開いて、スクリプトファイルにあるフォルダにcdコマンドで移動して、ファイル名「ruby proto.rb」と入力すると、 ruby: No such file of directory -- proto.rb (LoadError) と出て先に進めません。 ディレクトリもファイルもちゃんとあるのですが……。 回答お願いします。

  • RubyでexeファイルをつくるExerbについて

    RubyでexeファイルをつくるExerbというライブラリをインストールしたいです。 でとりあえずやってみたところどうやらうまいぐあいにインストールできていないようです。 現象としては、普通にExerbの最新版5.30を落として適当なディレクトリに配置 コマンドプロンプトからruby setup.rbでExerb内のsetup.rbファイルを実行するとコマンドライン上でインストールが進みます完了後コマンドプロンプトでexerbを実行しても 内部コマンド~~とお決まりの文章がひょうじされて実行できません。 ruby.exeはパスが通ってるのでPC内のC:/ruby/binの中をみたところexerbファイル(※中身はRubyコード)は存在しますがどうやらexerb.exeファイルが生成?されてないようです。 一応http://sourceforge.jp/projects/exerb/releases/50337にあるようにRubyコアの バージョンをあわせて実行したのですがどうしても、うまくいきません。 原因はなんなのでしょうか? 識者の方、ご教授お願いします。 ActiveRubyとかいう実装の方をインスコすればデフォルトで実行できるようなのですが もともとインストールしていたRubyがrubyinstaller-1.8.7-p330ですので、なんとか このRubyで実行させたいのです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • ファイル名の一部を一括変更 コマンドプロンプト

    先ほど 【拡張子のみ一括変更したい コマンドプロンプト】 http://okwave.jp/qa/q8862743.html で質問させていただき無事解決いたしました! どうもどうもありがとうございました! 更に同じような内容になるのかとは思いますが、 どうぞこの素人にご指導くださいます様お願いします。 あるフォルダに入っている下記のようなjpg画像があります。 コマンドプロンプトを使用して『photo』部分のみを削除したいのですが、 可能でしょうか?    ・    ・    ・ 『2014_1215photo.jpg』→『2014_1215.jpg』 『2014_1216photo.jpg』→『2014_1216.jpg』 『2014_1217photo.jpg』→『2014_1217.jpg』 『2014_1218photo.jpg』→『2014_1218.jpg』    ・    ・    ・ *フォルダ内のファイルはすべてjpg *すべて上記の規則にのったファイル名 *windoews8 どうぞよろしくお願いいたします。

  • rubyでコマンドプロンプトを使うとき

    rubyのスクリプトをコマンドプロンプトで実行する際に、ディレクトリ名を引数に指定したいと思っています。 その場合記述的には「ruby スクリプト名.rb ディレクトリ名」と書けばよろしいのでしょうか? 例えば「temp」というディレクトリがあり、それを指定したい場合は「ruby スクリプト名.rb temp」と書けば指定できてることになるのでしょうか。 低レベルな質問かもしれませんが、ruby超初心者なので教えて頂ければと思います。

    • ベストアンサー
    • Ruby
  • Rubyの実行方法について質問です。

    Rubyの実行方法について質問です。 現在windows上のコマンドプロンプトでRubyパスを 通して「ruby ファイル名」で実行する事が出来ますが、 「ファイル.rb」のrubyファイルをダブルクリックだけで 実行出来る方法があると聞いたので、 その方法をご教示願います。

  • プログラミング ruby について

    悩んだ挙句、尋ねる相手もいないため、質問させてください。 テキストエディタに "puts 1+2" として、「calc.rb」と名前をつけて保存。その後コマンド プロンプトで"ruby calc.rb"で実行とすると、"3"と出力するはずのところ、"ruby: No such file or directory -- calc.rb (LoadEroor)"とでます。 何が原因でしょうか? ちなみに、テキストエディタとして、メモ帳 or SciTEを使用。 また、"ruby -v"の実行は、うまく表示されました

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

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

    • ベストアンサー
    • Ruby
  • Ruby vim 実行の仕方

    Rubyをvimで書いたので、実行しようとしたのですが、実行できないです。何がダメなのでしょうか? 手順としては、 vimで puts("Hello World!")と書きました。 w hello_ruby.rbと書いて保存しました。 コマンドプロンプトを開いて、hello_ruby.rbと入れて、Enterを押したのですが、 ’hello_ruby.rb’は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出ます。 コマンドプロンプトで、ruby -v と入れると、Rubyのバージョンは出てきます。 何がいけないのでしょうか?修正の仕方を教えてください。 詳しい方いらっしゃいましたら、よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • RubyとMeadow(Emacs)について

    RubyとMeadow(Emacs)について 自分のパソコンにRubyとMeadowをインストールしたんですが、 Meadowでソースプログラムを作ってからコマンドプロンプトでそれを実行しようとすると ’ruby’は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出てきてしまいます。 どうすれば実行できるのでしょうか? 教えていただきたいです。 ちなみにこれは夏休みの宿題で、 プリントに書かれていたとおりにやりました。 間違いがないか自分でなんども確認しましたが、 たぶん書いてあることは間違っていないと思います。 どのようにやったかというと、 Meadowでhello.rbというファイルに print("Hello, Ruby World !\n") と打ち込み、c:\progIに保存。 コマンドプロンプトを開いて progIに移動し、 ruby hello.rb →[Enter] です。

    • ベストアンサー
    • Ruby
  • コマンドプロンプトのバッチファイルについて

    ディレクトリ1に以下のようなファイルがあります。  "file01_05_aa.jpg"  "file01_05_bb.jpg"  "file01_05_cc.jpg"  "file21_04_aa.jpg"  "file21_04_bb.jpg"  "file21_04_cc.jpg"  "file31_03_aa.jpg"  "file31_03_bb.jpg"  "file31_03_cc.jpg" これらのファイル形式は (file)(XX)_(XX)_(XX).jpg これらの中からこの正規表現でヒットするファイルのみ指定した別ディレクトリにコピーしたいです。 file\d\d_(05|03)_(aa|cc)\.jpg Windowsのコマンドプロンプトで実現可能でしょうか。可能であればコマンド列を教えてください。 (cygwinでも良いです。) よろしくお願いいたします。

専門家に質問してみよう