Renommer des photos selon les données EXIF

By 13 août 2011 Non classé

top

Un petit script bien pratique pour se simplifier la vie avec les noms de fichiers photo et leur classement : renommer des photos selon les données EXIF date et heure de prise de vue.
Merci à l’auteur.
Source : Taltan.blog.bkp

#!/bin/bash
############################################################################################
# Taltan – http://www.taltan.fr – ola.taltan_AT_laposte.net #
############################################################################################
# Script exif_photos_rename_v1.2.sh #
# Licence : GNU / GPL #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme : #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext => ex : 20061104_19.41_007.jpg #
# Fonctionne pour une numérotation de 001 à 999 #
############################################################################################
# Dépendances #
############################################################################################
# – Nécessite le paquet exiftool : http://www.sno.phy.queensu.ca/~phil/exiftool/ #
# – Nécessite le paquet zenity : http://library.gnome.org/users/zenity/index.html.fr #
# => sudo apt-get install libimage-exiftool-perl zenity #
############################################################################################
# 15/07/07 – v1.0 – Création #
# 27/07/07 – v1.1 – Réorganisation #
# – Choix du début de numérotation, par défaut à 1 #
# 09/07/08 – v1.2 – Remplacement de imagemagick par exiftool pour le traitement #
# – Ajout boîte de dialogue de barre de progression en pourcentage #
############################################################################################
## Variables
nb_param= »$# »
erreur=0
typeset -i CNT=1
typeset -i CUR=0

## Fonctions début de numérotation
début_numerot ()
{
numParam=`zenity –title « Début de numérotation » –entry-text= »1″ –entry –text « Par défaut à 1, à modifier le cas échéant : »`
if [ $? != 0 ]; then
exit 1
fi
[ $? -ne 0 ] && exit 2 # Annulation
}

## Fonctions renommage des fichiers
rename_jpeg ()
{
for parametre in « $@ »;
do
old_name= »$parametre »
date_time=`exiftool « $parametre » | grep « Create Date »`
extension=`echo $parametre | awk -F « . » ‘{print $NF}’`
aa=`echo $date_time | cut -d: -f2 | cut -c2-5`
mm=`echo $date_time | cut -d: -f3`
jj=`echo $date_time | cut -d: -f4 | cut -c1-2`
hh=`echo $date_time | cut -d: -f4 | cut -c4-5`
min=`echo $date_time | cut -d: -f5`
if [ $numParam -gt 0 ] && [ $numParam -lt 10 ]; then
numero=00$numParam
fi
if [ $numParam -gt 9 ] && [ $numParam -lt 100 ]; then
numero=0$numParam
fi
if [ $numParam -gt 100 ] ; then
numero=$numParam
fi
new_nane=`echo ${aa}${mm}${jj}_${hh}.${min}_${numero}.${extension}`
cp « $old_name » « ${new_nane} »

if [ $? = 0 ] ; then
echo « ${old_name} => ${new_nane} …. OK » >> /tmp/exif_photos_rename.log
rm -f « $old_name »
else
echo « Impossible de renommer $old_name …. NOK » >> /tmp/exif_photos_rename.log
let $[erreur += 1] fi
CUR=$CNT*100/$nb_param
echo $CUR
echo « #Traitement de $nb_param photos\n${old_name} => ${new_nane} … en cours\n\nAvancement: $CUR %\n  »
CNT=$CNT+1
let $[numParam += 1] done
nb_renomme=$(( $nb_param – $erreur ))
if [ $erreur != 0 ] ; then
touch /tmp/exif_photos_rename.err
echo « #Fin de traitement : $nb_param fichiers\n\nFichiers renommés : $nb_renomme\nFichiers impossible à renommer : $erreur\n\n _!!_ Cliquer sur Valider pour afficher le rapport de traitement _!!_\n »

else
echo « #Fin de traitement : $nb_param fichiers\n\nFichiers renommés : $nb_renomme\nFichiers impossible à renommer : $erreur\n\nOK, vous pouvez fermer en cliquant sur Valider !\n »
fi
}

## Fonctions affichage du rapport de traitement
affich_log ()
{
if [ -f /tmp/exif_photos_rename.err ] ; then
cat /tmp/exif_photos_rename.log | zenity –text-info –title « /tmp/exif_photos_rename.log » –width=500 –height=500
fi
rm -f /tmp/exif_photos_rename.log
rm -f /tmp/exif_photos_rename.err
}

## Traitement
if [ « $# » -eq 0 ]; then
zenity –error –title= »error » –text= »Selectioner au moins 1 fichier »
exit 1
fi
début_numerot
rename_jpeg « $@ » | zenity –progress –title= »exif_photos_rename » –percentage=0
affich_log

2 Comments

  • MrSoul dit :

    Pourquoi faire un script aussi long et compliqué alors qu’Exiftool possède des fonctions de renommage directement intégré et qu’il est possible de faire la même chose avec une seul toute petite ligne de commande ?

  • Bertrand dit :

    Un bon point MrSoul !
    Je suis seulement utilisateur de ce script donc cela me revient également à écrire une petite ligne de commande ou à un clic …
    Merci d’avoir mentionné Exiftool qui à l’air d’être un outil intéressant – je vais me documenter !