Como a parte da descrição do nome do arquivo pode conter o padrão -
(um hífen entre dois espaços), você pode alterá-lo para algum símbolo que não ocorra na parte da descrição. Eu escolhi £
, mas isso é puramente arbitrário.
rename 's/ - /£/' *
rename 's/([^,]*), ([^£]*)£/$2 $1 - /' *
s/ - /£/' tells rename to replace the first instance of
- it finds with
£ . The second command is a bit more complicated. Parenthases (
() ) are used to group selections together -- so everything that matches the pattern within the first set of parens can be called later as
$ 1 (all the way up to
$ 9 ).
[^,] means 'any character, except for
, ';
means 'zero or more of the previous character';
[^,] 'significa' zero ou mais de qualquer caractere, exceto por uma vírgula '. Como a renomeação é gulosa por padrão, ela corresponde à string mais longa possível.
O resto, penso eu, segue muito naturalmente.
Se você não tiver certeza se um símbolo aparece em algum lugar no nome do arquivo, basta executar:
printf '%s\n' *£*
Se você tiver perl-rename:
rename 's/([^,]*), (.*) - /$2 $1 - /' *
Isso será interrompido se a parte da descrição dos nomes de arquivos contiver -
(ou seja, um -
entre dois espaços).
Você deve testar isso com o sinal -n
, que não renomeia nenhum arquivo, mas mostrará o que teria :
rename -n 's/([^,]*), (.*) - /$2 $1 - /' *