Re: Script pour renommer des photos selon la date de leur prise
Guillaume a écrit :
Bonjour à tous.
Qui saurait me dire comment faire la (lourde) tâche suivante ?
J'ai tout un tas de photos issues de mon appareil photo numérique en .jpg qui
sont classées n'importe comment et j'aimerais les renommer en fonction de la
date à laquelle elles ont été prises, c'est-à-dire faire en sorte que ma photo
nommée img_0258.jpg prise le 30 mars 1998 s'appelle désormais 08_03_30.jpg...
Perso j'utilise ce script
---------------------- début du script ------------------------------------
#!/bin/bash
# ce script depend du paquet "exiftags"
echo -n "Allume l'appareil de photo et positionne le petit curseur"
echo ' sur la visualisation des images.'
echo 'Puis branche-le (attention à bien respecter cet ordre)'
echo 'Tape entrée lorsque tout est prêt.'
read
echo "Où faut-il mettre ces photos ?"
echo "(qui seront dans un nouveau répertoire avec comme nom la date
d'aujourd'hui)"
echo ""
echo "1. Dans /home/slv/Photos/0_En_attente"
echo "2. Dans /home/chr/Nos_photos/0_En_attente"
echo -n "3. Dans le répertoire courant, c'est à dire "
pwd
read lieu
echo "Faut-il rajouter un suffixe au nom du répertoire accueillant ces
photos ?"
read O_N_suffixe
case $O_N_suffixe in
o*|O*)
echo "Et quel est ce suffixe (sans espace ni caractères interdits STP)?"
read suffixe;;
esac
#dossier=$(date +%d_%m_%Y_%Hh_%M)
# pour avoir la date au format US, plus pratique pour l'ordre des
dossiers lorsqu'on affiche la liste
dossier=$(date +%F_%Hh_%M)
case $O_N_suffixe in
o*|O*)
dossier=$(date +%F_%Hh_%M)_$suffixe;;
esac
case $lieu in
3)
repertoire=.;;
2)
repertoire=/home/chr/Nos_photos/0_En_attente;;
1)
repertoire=/home/slv/Photos/0_En_attente;;
esac
mkdir -p /var/Photos/$dossier
mkdir -p $repertoire/$dossier
(
cd $repertoire/$dossier/
# Pour que un user non root puisse utiliser cette commande, voir
la doc de gphoto2 ou
# mon rapport dans Mon_ordinateur/instal...
#sudo gphoto2 -P
gphoto2 -P
# renomme les fichiers *.JPG en *.jpg
#marche avec Debian, conforme aux standards perl
rename 's/\.JPG/.jpg/' *.JPG
#pour tous les fichiers .jpg dans le rep ou on lance le script
for fichier in `ls *.jpg`
do
#on recupere la date de la prise de vue et on la stocke dans
la variable DATE
DATE=`exiftags -v $fichier | grep Generated | awk '{print $3}' |
tr '\:' '\_' `
#----------------------------^^^^^^^^^^^^^^---- Cherche la ligne
contenant le mot Generated
#---------------------------------------------^^^^^----sort le
troisième champ de la ligne
#
--------------------------------------------------------------^^^^^^---
remplace : par _
#On insère la date de l'exif au début du nom du fichier
rename 's/^/'$DATE'-/' $fichier
done
)
chgrp -R camera $repertoire/$dossier/
chmod g+rw $repertoire/$dossier/
chmod g+rw $repertoire/$dossier/*
cp $repertoire/$dossier/* /var/Photos/$dossier
echo "Les photos qui viennent d'être chargées sont dans le dossier"
$repertoire/$dossier
echo "Une copie de secours de $dossier se trouve dans /var/Photos."
echo "Que faut-il faire maintenant ?"
echo " 0. Quitter"
echo " 1. Visualiser ces photos aves kuickshow"
echo " 2. Visualiser ces photos avec Gthumb"
echo " Entre ton choix...."
read visu
case $visu in
O)
exit0;;
1)
(
cd $repertoire/$dossier/
kuickshow
);;
2)
(
cd $repertoire/$dossier/
gthumb *
);;
esac
--------------------------------------- fin du script
-------------------------------------------------
Reply to: