Como usar quantificadores regex para renomear múltiplos arquivos com zmv?

4

Eu tenho os seguintes arquivos em um único diretório:

1-1 - different text for each file here.txt
1-2 - different text for each file here.txt
.
.
1-9 - different text for each file here.txt
1-10 - different text for each file here.txt
1-11 - different text for each file here.txt
1-12 - different text for each file here.txt
.
.


Desejo renomear os arquivos de uma só vez (usando zmv em execução em zsh ) para:

1-01 - different text for each file here.txt
1-02 - different text for each file here.txt
.
.
1-09 - different text for each file here.txt
1-10 - different text for each file here.txt
1-11 - different text for each file here.txt
1-12 - different text for each file here.txt


Aqui está o que eu tentei: zmv '1-([0-9])(*)' '1-0$1$2'


Isso resulta nos seguintes nomes de arquivos:

1-01 - different text for each file here.txt
1-02 - different text for each file here.txt
.
.
1-09 - different text for each file here.txt
1-010 - different text for each file here.txt
1-011 - different text for each file here.txt
1-012 - different text for each file here.txt
.
.

Então, pensei em alterar o padrão de localização para zmv '1-([0-9]{1})(*)' '1-0$1$2' para corresponder apenas aos arquivos com um único dígito após o hífen, mas isso não funciona (Acabei de receber zmv:232: no matches found: 1-([0-9]{1})(*) ).

O que estou fazendo de errado? Isso é possível mesmo usando zmv ou devo usar algo como sed em um loop for ou algo assim?

    
por Marco Peluso 26.02.2011 / 00:26

1 resposta

4

Isso deve funcionar para você:

zmv '1-([0-9])( *)' '1-0$1$2'

ou

zmv '1-([0-9])([^0-9]*)' '1-0$1$2'

Você só precisa fazer a correspondência incluir apenas um dígito seguido por um espaço ou um dígito. Com o jeito que você tinha, combinava com um dígito seguido por qualquer coisa .

    
por 26.02.2011 / 00:53