Não é possível encontrar o regex certo para renomear

0

Eu tenho alguns programas de TV armazenados no meu servidor Ubuntu e eu poderia renomeá-los, então o Kodi pode reconhecê-los, exceto um:

Primeiro episódio, primeira temporada:

Name - S01E001 - Title part1
Name - S01E001 - Title part2
Name - S01E001 - Title part3

Primeiro episódio, segunda temporada:

Name - S02E020 - Title part1
Name - S02E020 - Title part2
Name - S02E020 - Title part3

Então Kodi acha que o segundo vídeo é S02E20, mas é S02E01. Os seis arquivos devem ser depois da renomeação:

Primeiro episódio, primeira temporada:

Name - S01E001.1 - Title
Name - S01E001.2 - Title
Name - S01E001.3 - Title

Primeiro episódio, segunda temporada:

Name - S02E001.1 - Title
Name - S02E001.2 - Title
Name - S02E001.3 - Title

Eu sei que há muitas questões relacionadas aqui, mas nenhuma se encaixa nesse padrão e quase ninguém explica sua solução. A manpage de rename não me ajuda

    
por Motte001 17.06.2016 / 23:49

1 resposta

1

A correspondência de expressão regular /^(.*) - (.*) - (.*) part([0-9]+)/ inclui o nome, o indicador de episódio, o título e o número da peça nos grupos que você pode usar como $1 a $4 no texto de substituição.

rename 's/^(.*) - (.*) - (.*) part([0-9]+)/$1 - $2.$4 - $3/' *

Qualquer coisa depois da parte part1 , como uma extensão de arquivo, não é alterada.

Se você quiser modificar os grupos de captura, use o modificador e no final da expressão s/…/…/ . Em s/REGEX/REPLACEMENT/e , a parte REPLACEMENT é uma expressão Perl, não uma string com interpolação variável. Em uma expressão Perl, use o operador . para concatenar cadeias. Por exemplo, se você quiser subtrair 1 do número de peça:

rename 's/^(.*) - (.*) - (.*) part([0-9]+)/"$1 - $2." . ($4-1) . " - $3"/e' *
    
por 19.06.2016 / 01:32