Alterar extensões de arquivos extraviados

0

Renomei acidentalmente um grande número de meus arquivos com uma extensão .mp4 . Felizmente, a extensão original foi preservada no nome do arquivo (por exemplo, simon.says.nfo.mp4 )

Como eu removerei agora a parte mp4 desses arquivos?

Devido ao sistema de nomenclatura que tenho, não posso simplesmente encontrar um *.*.mp4 , o que seria muito mais fácil com um combo localizar / substituir.

    
por Charles penney 15.01.2017 / 20:01

2 respostas

1

"renomear" é um utilitário que faz exatamente o que você precisa:

rename 's/.mp4//' *.mp4

renomeie para outras informações

    
por 15.01.2017 / 20:18
2

Para remover a extensão .mp4 de todos os arquivos com a extensão .nfo.mp4 no diretório atual:

for fname in ./*.nfo.mp4; do
  newfname="$( basename "$fname" .mp4 )"
  mv -i "$fname" "$newfname"
done

O utilitário basename remove o caminho (deixa apenas o nome do arquivo) e é capaz de remover um sufixo de uma só vez. Podemos remover o caminho aqui sem adicioná-lo novamente, já que estamos interessados apenas no diretório atual. O efeito equivalente seria obtido usando a expansão do parâmetro newfname="${fname%.mp4}" (que remove o sufixo .mp4 , mas não exclui o caminho inicial de $fname , embora isso não seja um problema aqui).

Estou usando mv -i para que você confirme manualmente qualquer operação mv que, de outra forma, substituiria um arquivo existente.

Para o teste, o seguinte só irá imprimir o que teria acontecido:

for fname in ./*.nfo.mp4; do
  newfname="$( basename "$fname" .mp4 )"
  printf 'Want to rename "%s" into "%s"\n' "$fname" "$newfname"
  ## mv -i "$fname" "$newfname"
done
    
por 15.01.2017 / 20:10