No Programming, No Life

プログラミング関連の話題や雑記

Re:ファイルの添え番号の桁を3桁に揃えるGroovyスクリプト

ファイルの添え番号の桁を3桁に揃えるGroovyスクリプト - nemo_kazのメモ [Groovyライフ]
で、ファイル名のリネームをやっていたので、#replaceAllで書いてみました。
ついでに数値の最大桁数を求めてソートもしてみました。
ファイル名を生成するところまでで、リネーム処理は書いてません。


(動作確認: Groovy Version: 1.5.7 JVM: 1.6.0_10)

def list = [
   'hoge[1].jpg',
   'hoge[11].jpg',
   'hoge[2].jpg',
   'hoge[10111].jpg',
   'hoge[10].jpg',
   'hoge[100].jpg'
]

// 最大桁数を求めて
def maxDigit = getMaxDigit(list)
// 変換して
def repList = list.collect{ padNumber(it, maxDigit) }
// ソートして出力する
repList.sort().each{ println it }

def getMaxDigit(list) {
   list.collect{ name ->
      (name =~ /(\d+)/).collect{ it }
   }.flatten()*.toInteger().max().toString().size()
}
def padNumber(text, digit) {
   text.replaceAll(/\d+/){ it.padLeft(digit, '0') }
}

出力結果


hoge[00001].jpg
hoge[00002].jpg
hoge[00010].jpg
hoge[00011].jpg
hoge[00100].jpg
hoge[10111].jpg