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

eyecatch_ruby

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

 参考サイト

東京都内で仕事をしています。猫飼いたいです。30歳からピアノ始めたおじさんです。盆栽にも興味が出てきました。
最近ブログ用のTwitterアカウントを作成したので、是非フォローをしてください。@zakkiboooks

 コメントをどうぞ

  • 入力いただいたメールアドレスは公開されませんが、このブログが置いてあるサーバーに保存されます。
  • 入力いただいた情報の他に、WordPress の機能により IPアドレス を取得させていただきます。取得した IPアドレス はスパムコメントの対処ために利用され、公開することはありません。
  • 個人情報などを記入された場合、投稿いただいたコメントを表示しないか、該当箇所を編集して公開する可能性があります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。