find . -type f -iname "*.jpg" -print0 | xargs -0 -n1 -I % sh -c 'touch % -d "$(file %|grep -oP "datetime=\K[^,]*"|sed -e "s/:/-/"|sed -e "s/:/-/")"'
A transferência de imagens do IPhone de alguma forma estragou as datas do arquivo. Eu quero configurá-los a partir de dados EXIF.
Já encontrei uma solução, mas não consegui converter isso em um trabalho em lote. Sinta-se à vontade para ajudar, talvez outros usuários achem útil.
Eu resolvi com este comando.
identify -verbose <file> |egrep "Image:|exif:DateTimeDigitized:" |sed '{N;s,Image: \(.*\)\n.*exif:DateTimeDigitized: \(.*\),touch -d "" ,}'|sed 's,2017:10:,2017-10-,'
Eu não consegui converter isso em um trabalho em lote porque sed
é necessário para trabalhar em várias linhas que colidem de alguma forma com abordagens diferentes trabalhando em uma lista (xargs, uma lista simples ...)
Basta enviar para bash para executar ou copiar & colar.