Ruby でファイル名の桁数を揃えながら置換する方法

648 view

Flexible Renamer というとても素敵なリネームソフトでサクッと置換しちゃうところなんですけど、Mac OS には対応しておらず・・・

ということで、勉強中の Ruby でスクリプトを書いてみることに。

やりたいことと、Ruby のサンプルスクリプト

以下の様なファイル名の画像を

img102_01.png
 
img102_02.png
img103_00.png
img204_00.png

以下のように、数字3桁の部分を4桁に書き換える方法。

img0102_01.png
img0102_02.png
img0103_00.png
img0204_00.png

色々と書き方はあると思うんだけど、以下のように書くのが簡単な気がする。

require "fileutils"

Dir.glob("*.png") do |filename|
  newname = filename.gsub(/(\d{3})/){sprintf("%04d", $1.to_i)}
  FileUtils.mv(filename, newname)
end

gsub の引数の「正規表現」のところと、sprintf の第1の引数の「書式」のところを替えれば使いまわせます。

簡単なものなら Mac OS のターミナルで置換

態々 Ruby でスクリプトを書かなくても、簡単なものならターミナルでサクッとコマンドを叩く方法も。

例えば、以下のようにコマンドを叩くと

$ for F in *.png; do mv $F ${F/img/image}; done

以下のファイル名が

img102_01.png
img102_02.png

以下の様な感じに。

image102_01.png
image102_02.png

参考サイト

コメントを残す

  • コメント欄には個人情報を入力しないようにしてください。

  • 入力いただいたメールアドレスは公開されませんがサーバーに保存されます。
  • 入力いただいた情報の他に、IPアドレスを取得させていただきます。取得した IPアドレス はスパム・荒らしコメント対処ために利用され、公開することはありません。