Lego FR

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

De manière similaire à exiv2, si vous donnez à exiftool un fichier image en argument, il vous affichera l’intégralité des métadonnées.

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 :

  • 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 :

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

Ceci provoquera une sortie similaire à celle-ci sur le terminal :

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.