A veces vamos de fiesta, o de excursión, y son varias las personas que toman fotos con sus cámaras, y que más tarde comparten con los demás. La tarea de juntarlas todas ya es difícil de por sí (perezosos que son algunos :P), así que una vez que se tienen juntas, suele ocurrir que cada cámara tiene su propia forma de nombrar las fotos, y también su propia numeración.
Por ello me he creado este script que renombra las fotos respetando el orden en el que se tomaron las fotos. Para que esto funcione, es necesario que todas las cámaras de fotos tengan la fecha correcta, porque de lo contrario, los datos exif que lee el script, serán erróneos.
#!/bin/bash
#Forma de usar:
# sh ordena.sh *.jpg *.JPG …
# el resultado es una carpeta “ordenadas” con las fotos
# renombradas según la fecha en la que se tomaron
# Ficheros usados por el programa
FICHERO_ORDENACION=orden.txt
FICHERO_ORDENADO=ordenado.txt
>$FICHERO_ORDENADO
>$FICHERO_ORDENACION
# Recorrer todos las fotos pasadas como parámetro
# y almacenarlas en un fichero con su fecha de captura
for NOMBRE in $@
do
FECHA=`exif $NOMBRE | grep origi | cut d‘|’ f2`
echo $FECHA @ $NOMBRE >> $FICHERO_ORDENACION
done
# Ordenar el fichero segun las fechas
cat $FICHERO_ORDENACION | sort n >$FICHERO_ORDENADO
# Crear una carpeta para las fotos ordenadas
mkdir ordenadas
# Recorrer el fichero de fotos ordenadas, y copiarlas con
# un nuevo nombre a la carpeta “ordenadas”
a=0;
while read line
do
a=$(($a+1));
NUMERO=`printf “%04d” $a`;
NOMBRE=`echo $line | cut d‘@’ f2`;
FICHERO=`echo $NUMERO.jpg`;
cp $NOMBRE ./ordenadas/$FICHERO
done <$FICHERO_ORDENADO
# Borrado de ficheros temporales
rm $FICHERO_ORDENADO
rm $FICHERO_ORDENACION
Para poder usar el script es necesario tener instalado el paquete exif:
sudo aptitude install exif
Para quien prefiera descargar el archivo aqui.