"renomear" é um utilitário que faz exatamente o que você precisa:
rename 's/.mp4//' *.mp4
renomeie para outras informações
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.
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