A l'heure où des milliers de photographies peuplent nos appareils numériques, trier et organiser ses images devient un casse-tête, surtout quand la technologie joue contre nous. En effet, si les dates de prise de vue ne son pas bonnes dès l'origine, la tâche s'avère vite très complexe. D'autant que tous les albums et pellicules numériques utilisent la fameuse date de création de l'image, stockée dans le fichier sous format EXIF ou bien dans le système de fichiers. Exiftool nous permet d'y mettre de l'ordre.

1. Installer exiftool

A l'accoutumée, j'utilise Homebrew (sous macOS et avec le Terminal)

brew install exiftool

2. Quelles métadonnées (EXIF) possèdent nos fichiers ?

Première chose intéressante à connaitre ; quelle métadonnées nos images contiennent-elles ?

On utilise les options -s et -G pour :

a) Avec -s afficher le nom réel des tags EXIF (par exemple "CreateDate" à la place de "Create Date")

b) -G pour permettre de grouper les tags affichés selon les types de métadonnées (certains appareils et formats de fichiers génèrent des formats différents).

Soit par exemple :

exiftool -s -G /Volumes/USB/chemin/vers/l_image/07/ma-photo.cr2

Qui affiche ce type d'informations :

[File] 
FileModifyDate : 2011:01:20 12:02:35-05:00 [EXIF] 
ModifyDate : 2008:07:02 15:34:29 [EXIF] 
DateTimeOriginal : 2008:07:02 15:34:29 [EXIF] 
CreateDate : 2008:07:02 15:34:29`

Afficher les noms réels des tags EXIF va nous permettre ensuite de manipuler les métadonnées.

3. Modifier les métadonnées

Comment ça fonctionne ?

La structure de la commande est la suivante: "METADONNEEDEDESTINATION<METADONNEESOURCE" qu'on passe en argument

exiftool "-METADATA_NAME1<METADATA_NAME2" IMAGE

L'argument "IMAGE" peut être un fichier ou bien tous les fichiers du dossier (avec le joker )

exiftool "-FileModifyDate<DateTimeOriginal" IMAGE
exiftool "-FileModifyDate<DateTimeOriginal" *

Les commandes ci-dessus permettent de déplacer les données de "DateTimeOriginal" vers "FileModifyDate".

Deux commandes pour aller vite

On ne saurait trop vous conseiller de lire l'article jusqu'au bout, mais pour celles et ceux qui veulent aller vite, deux commandes rapides (effectuer une sauvegarde au préalable) :

A. Décaler le timestamp des photos (heure de la prise de vue)

Pour retrancher (ou décaler) d'1 heure le timestamp de toutes les photos du dossier :

exiftool "-DateTimeOriginal-=1" *

A l'inverse, pour ajouter 1 heure :

exiftool "-DateTimeOriginal+=1" *

B. Changer la date de création des fichiers photo

Option très utile pour les utilisateur macOS (qui a tendance à modifier la Date de création à sa guise). La commande va récupérer le tag "DateTimeOriginal" d'EXIF

exiftool "-FileModifyDate<DateTimeOriginal" *`

4. Renommer les fichiers

exiftool '-filename<CreateDate' -d %Y-%m-%d_%H-%M-%S%%-c.%%le -r -ext jpg ./test  

La commande suivante renomme tous les fichiers "jpg" dans le dossier "test", et tous ses sous-dossier avec l'option -r . La source des métadonnées est CreateDate.

On décompose la commande:

  • '-filename<CreateDate' signifie renommer le fichier image en utilisant la date et l'heure de création de l'image.
  • -d signifie "Définir le format des valeurs de date/heure".
  • %Y-%m-%d_%H-%M-%S-%%-c.%%le, utilisé conjointement avec "-d" spécifie le format à utiliser pour la date et l'heure lors du changement de nom du fichier.

De façon plus précise :

  • %Y%m%d_ signifie que la première partie du nouveau nom de fichier doit être composée des quatre chiffres de l'année de la date de création, suivis du mois et du jour, tous deux représentés par deux chiffres et séparés par un tiret. Le underscore _ signifie mettre un caractère de soulignement après la partie date du nom de fichier.
  • %H-%M-%S signifie ajouter l'heure, la minute et la seconde du temps de création, le tout représenté par deux chiffres séparés par des tirets.
  • %%-c signifie que si deux images ont le même nom de fichier jusqu'à ce stade du processus de nommage, un numéro de copie sera automatiquement ajouté et incrémenté" pour donner à chaque image un nom unique.
  • Le "-" avant le "c" ajoute un tiret avant le numéro de copie.
  • .%%le signifie conserver l'extension de nom de fichier d'origine, mais la rendre en minuscules si elle était à l'origine en majuscules, une bonne option lorsque les caméras insistent pour utiliser "CR2" au lieu de "cr2". (Si vous préférez les extensions en majuscules, utilisez .%%ue. Si vous préférez garder le boîtier d'origine intact, utilisez .%%e.)

N'hésitez pas à effectuer des modifications pour obtenir le format souhaité. Une sauvegarde s'impose naturellement avant toute modifications de fichiers ; on ne peut pas annuler une commande du Terminal.

Note : Retirez l'option -r, pour que la commande ne soit pas récursive aux sous-dossiers.

ExifRenamer

Pour les allergiques à la ligne de commande, il existe aussi l'excellent ExifRenamer qui bénéficie d'une interface graphique.

Exemple de format personnalisé pour ExifRenamer (voir la documentation incluse.

%Y-%M-%D_%h-%m-%s%S%C-%1s%2s%F

Pour aller plus loin

Site ExifTool de Phil Harvey : https://exiftool.org

Site d'ExifRenamer : https://www.qdev.de/?location=mac/exifrenamer