Veja se isso funciona para você:
find . -maxdepth 1 -type f -name "[0-9].???" -printf "mv \"%p\" \"%h/0%f\"\n"
Isto irá encontrar todos os arquivos no diretório atual que consistem em um único dígito e terminam com uma extensão de 3 caracteres. Se você quiser diretórios em vez de arquivos (como no seu exemplo), substitua -type f
por -type d
. Se você precisar permitir extensões mais longas, poderá ajustar o padrão de pesquisa. Se você precisar pesquisar recursivamente, remova o parâmetro -maxdepth 1
. A saída deste comando será os comandos a serem executados para fazer as renomeações. Por exemplo:
$ ls
10.png 1.png 2.png 3.png
$ find . -maxdepth 1 -type f -name "[0-9].???" -printf "mv \"%p\" \"%h/0%f\"\n"
mv "./3.png" "./03.png"
mv "./2.png" "./02.png"
mv "./1.png" "./01.png"
Se a saída parece correta, você pode executá-la canalizando a saída do comando find para o seu shell:
$ find . -maxdepth 1 -type f -name "[0-9].???" -printf "mv \"%p\" \"%h/0%f\"\n" | fish
$ ls
01.png 02.png 03.png 10.png