A renomeação de Perl trava ao renomear arquivos com expressão regular [closed]

2

Estou tentando usar perl-rename no Arch Linux para renomear muitos arquivos de acordo com um regex. Eu tenho uma grande quantidade de arquivos em uma pasta que segue este formato:

Title of File [Year] - quality.filetype

onde "Ano" tem 4 dígitos, a qualidade pode ser qualquer um de 720p, 1080p, DVD, etc., e o tipo de arquivo pode ser qualquer um dos mp4, mkv, etc.

Estou tentando renomear os arquivos para seguir este formato:

[Year] Title of File (quality).filetype

Desenvolvi esta expressão regular para corresponder às partes relevantes do arquivo:

/(.+) \[(\d{4})\](?: - (.+)\.+)*/

Depois de fazer algumas pesquisas eu desenvolvi este comando para tentar fazer a renomeação (eu removerei -n uma vez que eu sei que irá funcionar):

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./'

Quando eu executo este comando, perl-rename não envia nada e não sai. Alguém pode me ajudar a identificar o erro?

    
por Kev 09.09.2017 / 02:44

1 resposta

2

Eu não estava especificando quais arquivos para renomear. Adicionado um asterisco ao fim do comando:

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[$2] $1 ($3)./' *

Além disso, a maneira como eu estava fazendo referência a grupos de captura estava incorreta. Fazer referência a grupos de captura é feito como , etc., em vez de $1 , $2 , etc. A expressão de trabalho era semelhante a:

perl-rename -n 's/(.+) \[(\d{4})\](?: - (.+)\.+)*/[]  ()./' *
    
por 09.09.2017 / 03:07