El que use Shotwell probablemente se ha encontrado con este problema: importamos a nuestra colección fotos que tienen la fecha mal, las arreglamos pero, a pesar de que Shotwell ya las muestra bien, en el disco siguen estando mal colocadas. Es decir, si al importarlas eran de septiembre de 2002 y se habían colocado en 2002/09/xx, por mucho que les hayamos cambiado la fecha a 2014, siguen en el directorio erróneo.
Aunque es un error irritante por lo sencillo que sería que Shotwell lo hiciera bien, la buena noticia es que se arregla fácil con un birria script de pocas líneas. Basta ir al directorio base de nuestra colección (de donde cuelgan los 20xx), y ejecutar:
#!/bin/bash
find -iname "*.jpg*" | while read fich; do
fecha=$(jhead "$fich" | grep "Date/Time" | sed 's/ \+/ /g' | cut -d" " -f3)
anyo=$(echo $fecha | cut -d: -f1)
mes=$(echo $fecha | cut -d: -f2)
dia=$(echo $fecha | cut -d: -f3)
nuevaruta="./$anyo/$mes/$dia/$(basename "$fich")"
if [[ $nuevaruta != $fich ]]; then
echo "Moviendo $fich a $nuevaruta"
mkdir -p "$(dirname "$nuevaruta")"
mv "$fich" "$nuevaruta"
fi
done
Con esto, los ficheros de imágenes se mueven al directorio que les corresponde según su fecha EXIF. Afortunadamente, Shotwell es lo bastante inteligente como para detectar que hemos cambiado las imágenes de sitio, por lo que no hay peligro de perder la información de eventos, etiquetas, ni nada.
Eso sí, para que la cosa funcione hace falta tener instalada la utilidad JHead, de la que hablé el otro día.