[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: