Warning: Undefined variable $post_id in /home/yuichon/yuichon.com/public_html/wordpress/wp-content/themes/publisher-child/views/general/header/_common.php on line 28
Ruby でファイル名の桁数を揃えながら置換する方法
Warning: Undefined array key "page" in /home/yuichon/yuichon.com/public_html/wordpress/wp-content/plugins/batch-cat/admin.php on line 147

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

参考サイト

コメントを残す

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください