hello,
je suis un peu rigide lorsqu'il s'agit de gérer mes albums photos. Et un truc important pour moi est de garder les dates et heures des images apparaissant dans l'explorateur de fichiers en concordance avec les informations stockées dans les photos.
Pour ceux qui ne le savent pas, sur la plupart des appareils photos numériques, des metadonnées sont stockées dans les images, en particulier l'heure et la date de la photo. (pour peu qu'on ait réglé l'appareil à la bonne heure/date)
J'ai donc créé un script qui prend en entrée une photo, et qui en sortie modifie l'heure et la date système avec les données Exif.
#!/bin/bash
# find . -iregex ".*\.jpe?g" -exec ./exif_change_date.sh {} \;
# verifying usage
if [ "$#" = "0" -o "$1" = "-h" -o "$1" = "--help" ]; then
echo Usage : $(basename $0) image [ image ... ]
echo Used to provide date information for a list of images.
exit 1
fi
# loop that enables the treatment of a list of images
for i in "$@"; do
# verifying file
if [ -f "$i" ]; then
nom_du_fichier="$i"
type_du_fichier=`file "$nom_du_fichier" | awk -F":" '{print $2}'`
type_du_fichier=`echo "$type_du_fichier" | awk -F" " '{print $1}'`
echo Type de fichier $type_du_fichier
if [ $type_du_fichier == "JPEG" ]; then
image="oui"
else
image="non"
fi
if [ $image == "oui" ]; then
date_exif=$(identify -format "%[EXIF:DateTime]" "$nom_du_fichier")
date_modif=$(ls -lh "$nom_du_fichier" | awk -F" " '{print $6 " " $7}')
date_exif2=`echo $date_exif | awk '{print substr($1,3,2) substr($1,6,2) substr($1,9,2) "-" substr($2,1,2) substr($2,4,2)}'`
date_modif2=`echo $date_modif | awk '{print substr($1,3,2) substr($1,6,2) substr($1,9,2) "-" substr($2,1,2) substr($2,4,2)}'`
echo nom de fichier $nom_du_fichier
echo date Exif $date_exif $date_exif2
echo date modif $date_modif $date_modif2
if [ $date_exif2 != $date_modif2 ]; then
date_touch=`echo $date_exif2 | awk -F"-" '{print $1 $2}'`
echo Les dates sont differentes !!! $date_touch
touch -t $date_touch "$nom_du_fichier"
fi
echo
fi
else
echo "$i" : file does not exist
fi
done
Et si je veux modifier les photos du répertoire ~/temp :
gui@ubuntu:~/applis_to_install/exif$ find ~/temp -iregex ".*\.jpe?g" -exec ./exif_change_date.sh {} \;
Type de fichier JPEG
nom de fichier /home/gui/temp/IMG_1978.jpg
date Exif 2007:02:03 19:49:09. 070203-1949
date modif 2007-04-30 21:58 070430-2158
Les dates sont differentes !!! 0702031949
Type de fichier JPEG
nom de fichier /home/gui/temp/IMG_1983.jpg
date Exif 2007:02:03 19:53:30. 070203-1953
date modif 2007-04-30 21:58 070430-2158
Les dates sont differentes !!! 0702031953
Bien sûr, si je relance la même commande:
gui@ubuntu:~/applis_to_install/exif$ find ~/temp -iregex ".*\.jpe?g" -exec ./exif_change_date.sh {} \;
Type de fichier JPEG
nom de fichier /home/gui/temp/IMG_1978.jpg
date Exif 2007:02:03 19:49:09. 070203-1949
date modif 2007-02-03 19:49 070203-1949
Type de fichier JPEG
nom de fichier /home/gui/temp/IMG_1983.jpg
date Exif 2007:02:03 19:53:30. 070203-1953
date modif 2007-02-03 19:53 070203-1953
Il ne se passe rien parce que les fichiers ont déjà été corrigés.