Se você tiver zsh shell, poderá fazer algo como abaixo.
zmv '([0-9])-([0-9]##).(jpg)' '$1-${(l:3::0:)2}.$3'
Teste
touch 0-1.jpg
touch 0-23.jpg
touch 0-345.jpg
touch 0-6.jpg
touch 0-05.jpg
Altere o shell para zsh e, se zmv não estiver carregado, você poderá fazer autoload zmv .
Agora, você pode adicionar -n flag ao comando zmv para ver o que acontecerá se você executar o comando zmv . Estou executando o comando como
zmv -n '([0-9])-([0-9]##).(jpg)' '$1-${(l:3::0:)2}.$3'
A saída é
zmv -n '([0-9])-([0-9]##).(jpg)' '$1-${(l:3::0:)2}.$3'
mv -- 0-05.jpg 0-005.jpg
mv -- 0-1.jpg 0-001.jpg
mv -- 0-23.jpg 0-023.jpg
mv -- 0-6.jpg 0-006.jpg
Se você estiver satisfeito com o renomeado dos nomes dos arquivos, poderá remover o sinalizador -n .
Referências
Obrigado ao usuário Gnouc por esclarecer minha dúvida sobre essa questão que eu havia postado como outra pergunta para obter essa solução e o link para a resposta do Gnouc é isso .