Exiv2
Exiv2 (página web oficial) es una utilidad para manipular los metadatos de una imagen pudiendo acceder a los metadatos de EXIF, IPTC y XMP de la imágenes.
Si queremos renombrar imágenes con la fecha de la foto (sacado de los metadatos EXIF) al igual que hace por ejemplo Dropbox, podemos ejecutar este comando:
$ ls -1 *.JPG DSC00350.JPG DSC00351.JPG DSC00352.JPG $ exiv2 -r'%Y-%m-%d_%H.%M.%S_:basename:' rename $(ls *.jpg) $ ls -1 *.JPG 2016-01-21_12.36.16_DSC00350.JPG 2016-01-21_12.36.36_DSC00351.JPG 2016-01-21_12.37.15_DSC00352.JPG
Podemos quitar "_:basename:" si no queremos mantener el nombre del fichero, aunque a mi me gusta para tener una referencia. También podemos jugar con el formato de la fecha y hora, añadiendo o quitando según nuestras necesidades.
Un formato y comando más simple sería:
$ ls -1 *.JPG DSC00350.JPG DSC00351.JPG DSC00352.JPG $ exiv2 -k -F rename *.JPG $ ls -1 *.JPG 20160121_123616.JPG 20160121_123636.JPG 20160121_123715.JPG
Si queremos cambiar la fecha de una foto o añadirle le fecha en caso de que no tenga podemos usar el comando:
exiv2 -M"set Exif.Photo.DateTimeOriginal 2006:09:16 14:03:18" foto.jpg
En algunas ocasiones podemos tener una foto sin información de EXIF o al menos NO la fecha o una incorrecta, con este mini script podemos poner la fecha de modificación, por lo que con un touch podemos cambiar la fecha que queramos en el EXIF:
#!/usr/bin/env bash DEBUG=echo DEBUG= for jpg in *.jpg do echo "* Procesando $jpg" # obtenemos la fecha del EXIF fecha=$(exiv2 $jpg | egrep timestamp | cut -d\ -f4-) if [ "$fecha" == "" ] then # obtenemos fecha de CREACION del fichero # fecha=$(stat -f '%SB' -t '%Y:%m:%d %H:%M:%S' $jpg) # obtenemos fecha de MODIFICACION del fichero fecha=$(date -r $jpg "+%Y:%m:%d %H:%M:%S") echo " - obteniendo la fecha del sistema: $fecha" echo " + añadiendo la fecha al EXIF..." $DEBUG exiv2 -M"set Exif.Photo.DateTimeOriginal $fecha" $jpg fi echo " - fecha de la foto: ($fecha)" done