Tenho usado o youtube-dl para baixar um canal inteiro do youtuber para fins de arquivamento. Eu estava usando o padrão de nomenclatura padrão para nomear os vídeos que usa o título do vídeo, depois um hífen, o ID do vídeo de 11 caracteres e, por fim, a extensão do arquivo.
por exemplo
title of the video - (an example)-oHg5SJYRHA0.mp4
Para downloads futuros, removi o hífen e coloquei o ID do vídeo entre colchetes. O problema é que já tenho centenas de vídeos seguindo o antigo esquema de nomenclatura e não quero desperdiçar largura de banda baixando novamente apenas para obter o novo esquema de nomenclatura.
Como posso renomear arquivos de comprimentos variados para que um "]" seja colocado antes de ".mp4" e eles hifenizem, 11 espaços/caracteres antes de "].mp4" ser substituído por "["?
por exemplo
title of the video - (an example)[oHg5SJYRHA0].mp4
[EDITAR] Esqueci de especificar que prefiro uma solução que funcione em Linux e/ou FreeNAS/BSD.
Responder1
No Linux, você pode usarrenomearcomando assim:
rename 's/-\w{11}(?=\.mp4$)/[$&]/' *.mp4
Explicação Regex:
- # a hyphen
\w{11} # 11 word characters
(?= # positive lookahead, make sure we have after:
\.mp4 # a dot followed by mp4
$ # end of string
) # end lookahead
Substituição:
[ # opening square bracket
$& # the whole match (i.e. 11 characters)
] # closing squarre bracket
Se os 11 caracteres puderem ser diferentes de caracteres de palavra, use o seguinte:
rename 's/-\K.{11}(?=\.mp4$)/[$&]/' *.mp4
Onde .
corresponde a qualquer caractere, exceto nova linha.
Responder2
Se você não se importa em usar uma ferramenta de terceiros, que eu recomendaria para uso único, eu recomendariarenomeador avançado, é portátil e gratuito.
Caso contrário, você pode usar o PowerShell,esta descriçãodiz tudo o que você precisa saber. Deixe-nos saber se você ficar preso.