Como renomear videofiles mp4 não excluídos de acordo com a “data codificada”

1

Eu recuperei arquivos de vídeo excluídos do cartão SD e agora não consigo classificá-los por data.

Eu posso ver "data codificada" com mediainfo filename .

Como posso usar a "data codificada" para classificar vídeos, até mesmo renomeá-los de acordo com essa data ou, melhor ainda, reescrever "data de modificação" nas propriedades do arquivo?

    
por Ohto Nordberg 20.11.2016 / 16:36

1 resposta

2

Assumindo que a linha de saída que você tem é algo como isto (o formato de data não importa):

Encoded date               : 2016-11-20

Você pode renomear os arquivos como datas com um pequeno script ...

i=0; for f in *; do printf -v new "$(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)//p')-%02d.mp4" "$((++i))"; echo mv -v -- "$f" "$new"; done

Estou dando a eles um número final para garantir que os arquivos com a mesma data não tenham exatamente o mesmo nome, o que faria com que alguns fossem sobrescritos. Novos nomes de arquivos serão 2016-11-20-01.mp4 etc ou qualquer que seja o formato de data de "Data codificada" para você. Remova echo após o teste para realmente renomear os arquivos. Versão mais legível:

i=0
for f in *; do 
   printf -v new "$(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)//p')-%02d.mp4" "$((++i))"
   echo mv -v -- "$f" "$new"
done

Explicação

  • i=0 inicia a iteração a partir de 0
  • for f in * para todos os arquivos no diretório atual (substitua pelo caminho apropriado ou glob, se necessário)
  • printf -v new formata o novo nome assim
  • $(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)//p') extrai as informações de data do campo Data codificada
  • -%02d.mp4" "$((++i))" adiciona um número e uma extensão ao final de cada nome de arquivo
  • mv -v -- "$f" "$new" renomeie os arquivos
por Zanna 20.11.2016 / 17:07