0 で埋められたファイル名と一致する Bash スクリプトのパターン

0 で埋められたファイル名と一致する Bash スクリプトのパターン

ファイル名をゼロパッドしたいです。このスクリプトを使用していますここ

#!/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"

おすすめ記事