No Debian, Ubuntu e derivados, você pode usar o rename script Perl :
rename 's/(?<=-)([0-9]+)/sprintf "%03d", $1/e' prefix-*.ext
Alguns sistemas podem ter este comando instalado como prename ou perl-rename . Observe que este não é o utilitário rename do pacote util-linux, que não fornece uma maneira fácil de fazer isso.
No zsh, você pode usar zmv para renomear e l sinalizador de expansão de parâmetro para preencher com zeros.
autoload -U zmv
zmv '(prefix-)(*)(.ext)' '$1${(l:3::0:)2}$3'
Você também pode fazer isso com um loop de shell simples. Os shells não possuem boas construções de manipulação de strings; Uma maneira de preencher com zeros é adicionar 1000 e remover os 1 .
for x in prefix-*.ext; do
n=${x%.ext}; n=${x##*-}; n=$((n+1000))
mv "$x" "${x%-*.ext}${n#1}${x##*-}"
done
Outra maneira é chamar o utilitário printf .
for x in prefix-*.ext; do
n=${x%.ext}; n=${x##*-}
mv "$x" "${x%-*.ext}$(printf %03d "$n")${x##*-}"
done