Añadir nuevo comentario

Renombrar las fotos añadiendole la fecha exif al principio en linux

Fotos ordenadas por fecha

Introducción

Muchas veces tenemos fotografías del mismo día pero tomadas con diferentes cámaras de fotos. Cada una le da a las imágenes usa nombres diferentes, por lo que para ordenarlas cronológicamente no es nada fácil. Por suerte, la mayoría  de las cámaras almacena en las fotos datos como la fecha y hora que tenía la cámara cuando fue tomada (se llaman datos exif). Gracias a esto, podemos extraer estos datos y usarlos para renombrar las fotografías. Así podremos ordenarlas cronológicamente.

Para ello necesitamos tener primero instalado el programa exif (con algunas fotos no me funcionaba y lo tube que hacer con libimage-exiftool-perl). Si no lo tenemos, solo hay que instalar el paquete llamado exif (o libimage-exiftool-perl) a través de nuestro gestor de paquetes preferido o con el siguiente comando:

>> sudo apt-get install exif

 

>> sudo apt-get install libimage-exiftool-perl

Añadir la fecha al nombre de las fotos

Para añadir la fecha al comienzo del nombre del fichero tendremos que ejecutar uno de los dos siguientes comandos:

>> for i in *.jpg; do dst=$(exif -t 0x9003 -m "$i" ) && dst_esc=$(echo $dst | sed 's/ /_/g' | sed 's/:/-/g' ) && mv "$i" "$dst_esc $i" ; done

 

>> for i in *.jpg; do dst=$(exiftool -T -createdate "$i" ) && dst_esc=$(echo $dst | sed 's/ /_/g' | sed 's/:/-/g' ) && mv "$i" "$dst_esc $i" ; done

Explicación de cada parte del comando:

  • Para hacer solo esto con las fotos que tienen de extensión .jpg pondremos lo siguiente (si nuestras fotos tienen otra extensión cambiaremos esta) :  
  • Extraemos de la imagen la fecha en la que se tomó:
>> exif -t 0x9003 -m  DSC00024.JPG
2006:10:13 03:17:3

 

>> exiftool -T -createdate DSC00024.JPG
2006:10:13 03:17:3
  • Como no me gustan los espacios en los nombres de los archivos, lo cambio por _ con el siguiente comando:   
  • Como no me gustan los : en los nombres de los archivos los cambio por - con el siguiente comando:   

Quitar la fecha del nombre de las fotos

Para quitar la fecha que hemos añadido en el anterior paso solo tenemos que eliminar los primeros 19 caracteres del nombre que corresponden con la fecha (YYYY:MM:DD-HH:MM:SS). Esto lo haremos con el siguiente comando:

>> for i in ????-??-??_??-??-??*; do oldname=$(echo "$i" | sed 's/...................\(.*\)/\1/' ) && mv "$i" "$oldname" ; done

Explicación de cada parte del comando:

  • Solo queremos renombrar los archivos que tienen la fecha. Estos los conseguimos con lo siguiente: for i in ????-??-??_??-??-??*; do

Editar los datos Exif de las fotos

Puede ser que cuando hicieramos las fotos, la fecha de la cámara estuviera mal puesta. Para modificar la fecha y hora de los datos exif de las fotos, podemos utilizar el comando exiv2. Si no lo tenemos instalado, solo tenemos que instalar el paquete exiv2 desde nuestro gestor de paquetes preferidos o ejecutando el siguiente comando:

>> sudo apt-get install exiv2

Una vez ya lo tenemos instalado podemos empezar a modificar los datos exif. A continuación tenéis unos ejemplos de uso:

  • Sumar 3 años:
>> exiv2 -Y 3 *.JPG
  • Sumar 2 meses:
>> exiv2 -O 2 *.JPG
  • Sumar 5 días:
>> exiv2 -D 5 *.JPG
  • Sumar 3 horas:
>> exiv2 -a 03:00:00 *.JPG
  • Sumar 10 minutos:
>> exiv2 -a 00:10:00 *.JPG
  • Sumar 27 segundos:
>> exiv2 -a 00:00:27 *.JPG

(si queremos restar en vez de sumar, solo tendremos que poner números negativos)