Como eliminar uma cadeia de caracteres específica dentro de um nome de arquivo?

1

Eu copiei vários DVDs para um HTPC doméstico (servidor plex). Alguns dos nomes de arquivos contêm caracteres indesejados. Eu quero preservar a maior parte da string de nome de arquivo original, mas eliminar o texto indesejado dentro dele. Aqui estão alguns exemplos:

  • Nome de arquivo existente Apollo 18-1.mp4 , remover -1 Novo nome de arquivo Apollo 18.mp4 Regra: dentro de um diretório escolhido, localize todos os nomes de arquivos terminados em "-1" e elimine a cadeia de caracteres "-1"
  • Nome do arquivo ENTOURAGE_DISC1.Title1.avi , remover .Title1 Novo nome do arquivo ENTOURAGE_DISC1.avi Regra: dentro de um diretório escolhido, localize todos os nomes de arquivos terminados em ".Title1" e elimine a cadeia de caracteres ".Title1"
por Guy D'Amico 27.03.2017 / 15:51

1 resposta

1

Com zsh zmv , extrapolando os requisitos desses dois exemplos:

autoload zmv # best in ~/.zshrc
zmv '(*)(.Title<->|-<->).(mp4|avi)' '$1.$3'

<-> é qualquer sequência de dígitos decimais. (uma forma de <x-y> onde nenhum limite é fornecido). Se você quiser apenas .Title1 e -1 especificamente e qualquer extensão, você sempre poderá alterá-la para:

zmv '(*)(.Title|-)1(.[^.]##)' '$1$3'

[^.]## correspondendo a um ou mais caracteres sem ponto.

    
por 27.03.2017 / 16:07