Se os seus arquivos forem nomeados a.txt, b.txt e assim por diante, a ordem de agrupamento padrão permitirá que você faça uma expansão simples de glob de nome de arquivo, em vez de precisar classificar os arquivos explicitamente na versão. Então eu sugiro fazer algo mais parecido com
i=1
cd "$dir"
for old in *."$ext"; do
printf -v new '%s%02d.%s' "$newbase" $((i++)) "$ext"
echo mv "$old" "$new"
done
depois de atribuir newbase=""
, ext=""
, dir=""
(com verificações de existência adequadas, é claro). Brinque com ele e remova o echo
quando a saída impressa estiver correta.