ファイル名をゼロパッドしたいです。このスクリプトを使用していますここ。
#!/bin/bash
num=`expr match "$1" '[^0-9]*\([0-9]\+\).*'`
paddednum=`printf "%03d" $num`
echo ${1/$num/$paddednum}
このスクリプトは、前に数字がゼロで埋められ、ファイル名を出力します。
$ zeropad "folder01/01.jpg"
folder001/01.jpg
しかし、次のような数字をゼロパディングしたいと思います。
$ zeropad "folder01/01.jpg"
folder01/001.jpg
どうすればいいですか? Bashパターンマッチングの多くの例を見ることができるWebページはありますか?
ベストアンサー1
path="folder01/01.jpg"
dir=$(dirname "$path")
file=$(basename "$path")
ext=${file##*.}
file=${file%.*}
# assume file is composed of digits here
printf -v newname "%s/%03d.%s" "$dir" $file "$ext"
echo "$newname"