Mac OS X の rename コマンドが正常動作しなかった為自作しました

リネーム先が既にあるとか言ってエラー吐き続けてたので自分で作った話。

本当は rename コマンドが正常に動けば良かったんですが、動かなかったので Ruby で書きました。
さらっと書いただけなんで中身すかすかですが目的が達成出来たのでそれでよしとして、問題は使い方。

の前にソース披露。

rename.rb

#!/usr/bin/ruby

# rename regexp str src

corrent_dir = Dir.getwd << '/'

ARGV[2..-1].each do |x|
  if File.ftype(corrent_dir + x) == "file"
    re = /#{ARGV[0]}/

    if re =~ x
      fname = x.sub(re, ARGV[1])
      src = corrent_dir + x
      dest = corrent_dir + fname
      File.rename src, dest
      puts "#{x} => #{fname}"
    end
  end
end
$ rename.rb regexp string files

引数は前から順にマッチさせる正規表現、置換文字列、対象ファイル
正規表現を使う場合は ' か " 付けないと shell にワイルドカード扱いされてファイル名で置き換わります。
置換文字列に後方参照は使えるので割と何でもありで編集可能です。
ただ、適当に作ったので、正規表現Ruby 準拠且つ、リネームの確認とか入らないのでミスしたら戻せません。
履歴残して戻せるようにするともしかしたら便利かもと思いつつ面倒なので放置します。