Renomeação sequencial de arquivos

2

Encontrei uma resposta para nomes de arquivos numéricos com preenchimento nulo que funciona bem para renomear nomes de arquivos da seguinte forma:

1.jpg > 00001.jpg
2.jpg > 00002.jpg
.
.
.
9.jpg > 00009.jpg

Isso usa o seguinte comando:

rename 's/\d+/sprintf("%05d", $&)/e' *.jpg

Mas meus nomes de arquivos não são numéricos. Eles são uma sequência alfanumérica, como: a.jpg, b.jpg, c.jpg...... m.jpg .

De maneira semelhante à pergunta original, quero renomeá-los para que eles sejam exibidos na sequência correta. Como faço isso?

    
por رشاد خان 28.09.2015 / 13:49

1 resposta

4

Você também pode anular as letras, você só precisa alterar um pouco o comando original para:

rename 's/\w+/sprintf("%05s", $&)/e' *.jpg

Basicamente, estamos apenas dizendo, substitua a primeira "palavra" (números e letras) por uma string com preenchimento zero. É muito parecido com o original, é apenas um pouco diferente. Esta versão pode funcionar para o problema original.

Você pode expandi-lo para uma correspondência .+ (para zero pad tudo ), mas talvez seja necessário manipular a extensão na parte superior.

Arnês de teste:

$ mkdir test; cd test; touch {a..d}.jpg 1.jpg
$ rename 's/\w+/sprintf("%05s", $&)/e' *.jpg
$ ls
00001.jpg  0000a.jpg  0000b.jpg  0000c.jpg  0000d.jpg
    
por Oli 28.09.2015 / 13:58