Como adicionar alguns caracteres ao nome do arquivo via 'renomear'?

2

Por exemplo, eu tenho um arquivo chamado 5.jpg . Como posso renomeá-lo para aaaaa.jpg com char a 5 vezes.

Eu tentei rename -v 's/(\d{1,})/a{$1}/g' * , mas isso renomeia 5.jpg para a{5}.jpg , o que não é o que eu quero. Eu entendo que a segunda parte da função não é um regexp, isso foi apenas uma tentativa.

    
por Roman 17.06.2015 / 16:32

2 respostas

5

Pelo menos três utilitários diferentes com o nome imaginativo rename(1) estão flutuando nas águas do Linux: (1) o que veio com util-linux , (2) um antigo script Perl de Larry Wall, interpretado por Tom Christiansen, e (3) um novo script Perl desenvolvido a partir do primeiro e incluído com Unicode::Tussle . Tanto quanto eu posso dizer, o que você quer não pode ser feito com a versão util-linux de rename(1) . Isso pode ser feito com qualquer um dos scripts Perl embora:

rename -n 's/(\d+)/"a" x $1/e' 5.jpg

Saída:

rename 5.jpg aaaaa.jpg

(derrube o -n para realmente renomear o arquivo).

    
por 17.06.2015 / 16:47
2

Se (e este é um grande se) você estiver usando o rename que usa uma expressão perl para modificar nomes de arquivos, você pode conseguir o que eu acho que você quer assim:

rename 's/(\d+)/"a" x $1/e' *

O sinalizador e é explicado em perldoc perlre . Ele modifica a interpretação do lado direito para que seja avaliado como uma expressão perl.

    
por 17.06.2015 / 16:44