Usando o utilitário de renomeação do Perl:
prename 's/(\d+)\./sprintf "%04d.", $1/e' A*.txt
prename
às vezes está disponível com o nome rename
. Existe, no entanto, outro utilitário não relacionado e incompatível chamado rename
que é instalado por padrão em algumas distribuições.
Distribuições do tipo Debian, entre outras, têm o rename / nome do Perl instalado por padrão. Se a sua distribuição não, as instruções para instalá-lo podem ser encontradas aqui
(dica do Hat to Steeldriver para uma versão melhorada do comando).
Exemplo
Considere um diretório com esses arquivos:
$ ls
A12345.txt A123.txt A12.txt A1.txt
Agora, vamos executar o prename:
$ prename 's/(\d+)\./sprintf "%04d.", $1/e' A*.txt
$ ls
A0001.txt A0012.txt A0123.txt A12345.txt
Como funciona
Um único comando substituto é usado:
s/(\d+)\./sprintf "%04d.", $1/e
-
(\d+)\.
corresponde a um ou mais dígitos seguidos de um ponto. Os dígitos são salvos no grupo 1.
-
O% final e
diz ao perl para avaliar o comando sprintf "%04d.", $1
. Esse comando retorna os dígitos do grupo 1 no formato %04d
, o que significa que quatro dígitos são preenchidos com zero, seguidos por um período.