ワンライナー

以下のワンライナーRubyで書いて少してまどった。

このスクリプトは、ファイル名から数字を取り出して、-1 して、新しいファイル名に変更するbatファイルを出力する。
正規表現matchで取り出したものは文字列ではなく、MatchDataオブジェクト http://www.ruby-lang.org/ja/man/html/MatchData.html なので、to_sはあるけど、to_iメソッドがないのだ。計算(ここでは1引く)するためには、整数オブジェクトにする必要があるので、to_s.to_iとすればよい。

$ echo jis*.jpg | ruby -e 'STDIN.read().split().each{|f| num=f.match(/(\d+)/).to_s.to_i-1; printf("ren %s rakuraku_keyboard_renshuuchou2_kana-%03d.jpg\n",f,num);}' > ren.bat