Ceci est une ancienne révision du document !
Les deux cas d'utilisation les plus courants sont :
Dans le premier cas, les métadonnées horaires enregistrées à l'intérieur des fichiers des photos sont erronées. Il en résulte un décalage horaire dans les métadonnées qu'il va suffire de corriger. Mais la date des fichiers sera également erronée puisque l'horloge de l'appareil photo n'était pas à l'heure.
Dans le second cas, les fichiers se retrouveront avec la date de l'importation des photos. Autrement dit, une date sans lien avec la prise de vue. Dans ce cas, il suffit de récupérer les métadonnées horaires contenue dans chaque photo pour les appliquer aux fichiers correspondants.
Typiquement, la date de l'appareil photo n'était pas bonne lors de la prise de vue. Les photos (metadonnées) et les fichiers se retrouvent avec une date erronée. En utilisant find1):
find *.JPG -exec sh -c "jhead -ta-1:3:0 -ft {}" \;
Ici, on a retiré 1h et 3 minutes à toutes les photos ayant pour extension ”.JPG“ et appliqué la date résultante au fichiers ainsi modifiés.
Avec un sélecteur plus complexe justifiant l'utilisation de find2) :
find . -type f -regextype sed -regex "^\.\/IMG_60[[:digit:]][[:digit:]]\.JPG" -exec sh -c "jhead -ta-1:3:0 -ft {}" \;
Dans cette syntaxe, la recherche est récursive sur le répertoire ”.“.
En utilisant une boucle do3) :
for i in *.JPG; do jhead -ta-1:3:0 $i; jhead -ft $i; done
Typiquement, les méta-données sont correctes mais des copies maladroites de fichiers de photos ont modifié la date du fichier alors que la photo et son fichier avaient originellement la même date.
En utilisant la commande jhead 4) :
$ jhead -dsft mon-fichier-jpeg
On peut aussi utiliser la commande exiv25) :
$ exiv2 -T rename *.jpg
Malgré les apparences, la commande ne modifie pas les noms des fichiers.
On décide d'appliquer la commande touch 6) à un ensemble de fichiers existants. Les solutions présentées peuvent être déclinées pour de multiples usages.
En utilisant la commande find7) :
$ find . -exec sh -c "touch -r {} -d '-1 hour' {}" \;
En utilisant une simple boucle8) for :
for i in *.JPG; do echo "traitement de $i"; touch -r $i -d '-1 hour' $i; done
En utilisant find9) (ici, on recule d'une heure et trois minutes) :
$ find *.JPG -exec jhead -ta-1:3:0 {} \;
En utilisant une boucle do:
for i in *.JPG; do echo "traitement de $i"; jhead -ta-1:3:0 $i; done