Esse decremento pode ser feito de uma maneira bem baixa: gere a lista, comece no começo. Não é assim tão fácil “produzir” lidando com todos os casos, mas é pouco mais que um one-liner se você estiver disposto a codificar coisas como o número máximo de dígitos e assumir que não existem outros arquivos chamados dir.*
. Usando a sintaxe bash, ajustada para menos digitação:
i=0
for x in dir.{?,??,???}; do
mv "$x" "${x%.*}.$i"
((++i))
done
Note que tem que ser dir.{?,??,???}
e não dir.*
para obter dir.9
antes de dir.10
.
Em zsh, você pode tornar isso um pouco mais robusto, sem custos, usando <->
para expandir para qualquer sequência de dígitos e (n)
para classificar numericamente ( dir.9
antes de dir.10
).
i=0
for x in dir.<->(n); do
mv $x ${x%.*}.$i
((++i))
done