Renommer ses photos en masse… avec Exiftool
Renommer mes photos est une étape de mon Workflow. Je la réalise entre la copie sur le disque et l’import dans Aperture. Il y a 4 ans, je vous présentais mon approche geek avec l’utilisation d’exiv2. Si exiv2 est un bon outil, il a le défaut de ne pas proposer simplement de package d’installation pour Mac. C’est la raison pour laquelle je me suis intéressé à un autre outil similaire que j’avais laissé de coté, Exiftool.
Exiftool
Exiftool est écrit en Perl, l’outil est disponible aussi bien pour Linux, Os X et Windows. Une fois installé, il suffit de l’exécuter dans un terminal avec la commande
exiftool
De manière similaire à exiv2, si vous donnez à exiftool un fichier image en argument, il vous affichera l’intégralité des métadonnées.
exiftool IMG_0045.CR2
J’ai écris similaire à car exiftool est beaucoup plus exhaustif avec cette commande. Peut être trop. Avec cette instruction, il m’a retourné 326 lignes de métadonnées… Bref, pour en tirer quelque chose d’utile, il faudra lire la documentation mais pour l’instant, je n’en ai besoin que pour une chose : renommer les photos.
Renommer ses photos avec Exiftool
Une des contraintes dans l’attribution du nom aux photos est le format que je souhaite. Le nom de mes photos a un pattern basé sur l’heure de prise de vue (le timestamp) qui est le suivant :
AAMMJJ-HHMMSS.CR2
où
- AA est l’année, les deux derniers chiffres
- MM est le mois
- JJ est le jour du mois
- HH est l’heure de la prise de vue, en format 24h
- MM est les minutes de la prise de vue
- SS est les secondes de la prise de vue
Si plusieurs photos ont le même timestamp, ce qui peut arriver lors d’une rafale par exemple, la première suit ce pattern, les suivantes se voient ajouter un _n où n est un simple indice (1 pour la seconde, 2 pour la troisième…).
L’heure de prise de vue est une métadonnée de la photo et les outils pour renommer les photos permettent d’utiliser cette métadonnée. Mais pas forcément selon le formatage que l’on souhaite, raison pour laquelle je n’utilise pas la fonction sous Aperture.
Exiftool accepte certains patterns, mais il y a une syntaxe à connaitre. La commande pour renommer un répertoire est la suivante :
exiftool -d %y%m%d-%H%M%S%%-c.%%e "-filename<CreateDate" .
Il y a quelques subtilités par rapport à une commande plus classique et par rapport à exiv2. Voici les explications :
"-filename<CreateDate"
: définit que cette commande renommera le fichier. Exiftool fonctionne avec des tags et le nom du fichier est un tag, référencé par -filename
. CreateDate génère la date selon le pattern fourni suite à l’option -d
et l’attribue au tag -filename
.
Vous reconnaissez certainement le format de date, mais il y a deux particularités. %-c
est l’indicateur qu’en cas de nom existant, un indice est ajouté au nom du fichier, indice précédé d’un tiret. Je ne suis pas arrivé à attribuer un underscore et pour ma part, ça ne me dérange pas. Le format doit également indiquer l’extension, %e
indique de conserver celle du fichier original.
Et si vous êtes prudents…
Une particularité d’exitool est que vous pouvez tester votre commande avant de renommer définitivement un fichier. Pour cela, il suffit de remplacer -filename
par -testname
. Ainsi, la commande précédente donnera
exiftool -d %y%m%d-%H%M%S%%-c.%%e "-testname<CreateDate" .
Ceci provoquera une sortie similaire à celle-ci sur le terminal :
'./IMG_0778.CR2' --> './141214-1759191.CR2' './IMG_0779CR2' --> './141214-1803471.CR2' './IMG_0780.CR2' --> './141214-1803471-1.CR2' './IMG_0782.CR2' --> './141214-1804041.CR2' 1 directories scanned 0 image files updated 477 image files unchanged
J’ai copié ici la fin de la sortie sur le terminal. Il y a eu 477 fichiers de parcouru, et vous avez un extrait de l’affichage.
Une fois comprise la particularité de la commande pour renommer ses fichiers basés sur le timestamp, il n’y a plus qu’à la réutiliser. Exiftool peut être utilisé en ligne de commande ou dans les scripts.
À propos de... Darko Stankovski
iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.
Bonjour,
Merci pour ton article, après plusieurs recherches je pense vraiment que ta solution va résoudre tous mes problèmes. J’ai un petit souci par contre. Je t’avoue que je ne suis pas familière avec exitfool, j’ai toutefois installé le logiciel et quand je fais le test du glisser-déposer d’une image vers exitfool(-k -lang fr) j’obtiens bien l’affichage des métadonnées. Par contre quand je souhaite le lancer par l’invite de commande on me dit que ce n’est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. J’ai testé avec « exiftool » « exiftool.exe » « exiftool(-k -lang fr) » etc. Je ne sais pas vraiment si mon problème vient de mon inexpérience avec l’invite de commande ou d’autre chose mais j’aimerai beaucoup appliquer ton auto. Merci par avance pour ton aide.
Merci,
En lisant « exiftool.exe », je présume que nous parlons de Windows. Tu a récupéré le zip je présume et tu a extrait le exe. Avec l’invite de commande, Windows ne sait pas où trouver ce programme. Windows (mais c’est valable aussi pour Mac et Linux) ne cherche les programmes que dans certains répertoires. La doc ( https://www.sno.phy.queensu.ca/~phil/exiftool/install.html ) précise alors de le renommer en exiftool.exe et de le déplacer dans le répertoire C:\WINDOWS. Je ne sais pas si c’est la meilleur pratique, je vais voir, j’ai accès à une machine Windows aujourd’hui 🙂
Désolée je viens de voir que dans mon précédent commentaire j’avais écris exitfool au lieu de exiftool mais rassure toi je ne me suis pas trompée dans l’invite de commande. En effet c’est sur Windows que j’ai voulu faire le test, c’est peut être par bêtise ou par sécurité mais j’ai préféré le faire hors mac. Du coup j’ai basculé le répertoire vers C:/Windows mais même résultat. J’attends donc tes lumières avec impatience, merci beaucoup !
Hello,
alors attention. Tu a dû télécharger le document zip pour Windows. Lorsque tu l’ouvre, tu obtient un répertoire exiftool-10.64 je présume. Ce répertoire contient un fichier exiftool(-k).exe. C’est ce fichier que tu dois copier dans le répertoire C:\WINDOWS et le renommer exiftool.exe. À partir de là, tu pourra exécuter dans le cmd la commande exiftool.exe ou simplement exiftool.
Si tu a copié un répertoire, Windows ne sait pas plus où est le fichier car ce qu’il connait, c’est le contenu du répertoire C:\WINDOWS, pas le contenu des sous-répertoires.
J’espère que tu a toutes les informations.
En fait, sous Mac, c’est plus simple et prêt à l’emploi… O:)
On y arrive petit à petit… ! J’ai « encore » (j’ai même envie de dire « toujours » ! ) besoin de tes lumières. Je pense que ta solution a fonctionné puisque il exécute exiftool.exe et me présente l’aide classique. Seulement je n’ai pas saisi où tu déposais les photos à renommer exactement pour qu’elles soient trouvées par exiftool. Dans C:/Windows ça ne fonctionne pas, en même temps je ne suis pas sûre que ça soit le bon endroit 😉
Mais j’ai totalement oublié de répondre à ce commentaire… 🙁
Désolé, grosse semaine…
Non, C:\Windows n’est pas le bon endroit. C’est un répertoire que l’on appelle système destiné à recevoir les programmes. Les programmes dans C:\Windows sont vus de « partout ».
De ce fait, tes photos sont où tu veux. Il faut que dans l’invite de commande (cmd sous Windows, Terminal sous Mac) tu navigue dans le répertoires pour être dans le même répertoire que les photos (à l’aide de la commande cd). Alors tu pourra exécuter ces instructions que je présente ici.
Je te conseille évidemment de faire des tests sur des copies de tes photos 😉
Bonjour,
j’ai utilisé votre tuto pour renommer mes photos. Ca a très bien fonctionné. Par contre impossible de réimporter les photos dans Photos. Photos détecte un pb sur les métadonnées. Embêtant.
Bonjour,
merci pour l’information, je n’ai pas eu de problème jusqu’ici. Quelle version de Photos ?
je tourne sur Sierra mais je pense qu’il n’y a pas eu de mise à jour depuis un certain temps de Photo.
J’avais exporté les originaux depuis Photos puis exécuter le script sur un hd externe. Il est vrai que j’avais de vieilles photos sur iphotos qui ont été réimportées sans difficultés… Je n’avait pas exporter les données IPTC en tant que XMP depuis Photos car j’avais remarqué que les métadonnées étaient quand même dispo. Iphotos ne m’a rien demandé. Pensait vous que le pb vienne de là?
Au pire je ferai un test.
Alors en effet, les métadonnées sont toujours présentes dans les photos. En tout cas, les exif. Les données IPTC ne sont pas exportées lorsqu’on exporte l’original, ce sont les données tel que le titre, lieu…
En fait, si vous avez exporté les originaux, les métadonnées n’ont pas dû être changées et rien dans cet article n’altère les métadonnées.
Bonjour, j’ai finalement réussi. Le pb résidait dans la taille des données à importer. En faisant par petits tas, ça a fonctionné. Par contre Photo ne permettant pas le tri par nom de fichier, j’ai bien peur que cela ne serve à rien. Dommage. Enfin presque, j’ai pu automatiquement renommer mes centaines de vidéos avant de les exporter pour les compresser.
Ah cette grande question du tri de l’affichage de Photos…
En effet, dans la vue Photos, les photos sont affichées par ordre chronologique de prise de vue. Dans l’album spécial Toutes les photos, c’est par ordre d’import… Et c’est tout, en tout cas jusqu’à Sierra.
J’ignore le pattern de vos noms de photos. Dans mon cas, l’ordre lexicographique (me la pète un peu là 🙂 ) correspond à l’ordre des dates donc d’affichage dans la vue Photos. Ça facilite la tâche. Si vous avez un mot « étiquette » dans votre nom de fichier, vous pouvez toujours passer par une recherche avant de créer un album si tel est le but. Je pense que l’idée d’usage de Photos est réellement d’exploiter la notion d’ordre chronologique et des métadonnées (titre, mots-clef…) et qu’ils se fichent du nom de fichier que la majorité des utilisateurs ne changent pas.