Batch renomeando os episódios da série de 1x01 * para S01E01 * padrão

0

Bash: como renomear em lote os episódios da série de 1x01* a S01E01* padrão?

Eu encontrei esta resposta , mas estou bastante perdido em como modificá-lo para o meu caso.

    
por Vlastimil 05.12.2016 / 22:55

3 respostas

2

Substruções de Bash farão:

for i in ?x??*
do
  mv "$i" "S0${i:0:1}E${i:2:2}${i:4}"
done
    
por 05.12.2016 / 23:25
1

Uma abordagem, usando o comando rename . Solte o -n quando estiver satisfeito com as renomeações propostas.

Explicação:

  • s/ = substituto
  • (\d+) = corresponde a 1 ou mais dígitos (temporada)
  • x = corresponde ao caractere "x"
  • (\d+) = corresponde a 1 ou mais dígitos (episódio)
  • / = fim da string de pesquisa, início da string substituta
  • S0 = inserir texto "S0"
  • $1 = insere os primeiros dígitos correspondentes de antes (temporada)
  • E = insere o caractere "E"
  • $2 = insere os segundos dígitos correspondentes de antes (episódio)
  • / = fim da string substituta

-

rename -n -e 's/(\d+)x(\d+)/S0$1E$2/' *
rename(Breaking_Bad_1x01.mkv, Breaking_Bad_S01E01.mkv)
rename(Shameless_3x05.mp4, Shameless_S03E05.mp4)
    
por 05.12.2016 / 23:31
-3

Você pode fazer isso um por um:

for f in 1x01*; do
    n='echo $f | sed 's/^1x01/S01E01/''
    mv $f $n
done
    
por 05.12.2016 / 23:07

Tags