Nouveau script, l'idée est reprise de Ras'. C'est pour renommer les photos. Renommage sous la forme :
2008-06-13.20h52min21.prenom_nom.extension
C'est vous qui fournissez prenom_nom
SCRIPT :
#!/bin/bash
# By : pmd
# Inspiré par http://forum.ubuntu-fr.org/viewtopic.php?pid=1843382#p1843382
# Argument obligatoire : $1 | Le repertoire ou les images à renommer se trouvent
# Option : $2 | Le mode inverse (Si $2=reverse on procède au renommage inverse)
cd "$1"
# Mode Normal
if ! [ "$2" = "reverse" ]; then
{
echo -n "Nom du photographe : "; read PHOTOGRAPHE
PHOTOGRAPHE=$(echo -n "$PHOTOGRAPHE" | sed 's% %_%g')
# Tous les fichiers de $1 qui terminent par .JPG ou .jpg
for NOM_PHOTO in *.[JjMm][PpOo][4VvGg]; do
# Extension du ficier
EXTENSION=$(echo $NOM_PHOTO | awk -F "." '{print $NF}' | tr '[:upper:]' '[:lower:]')
# Nouveau de la forme "2008-05-01.13h36min58.auteur.ext"
if [ "$EXTENSION" = "jpg" ]; then
{
NOUVEAU_NOM_PHOTO="$(exiv2 "$NOM_PHOTO" | grep timestamp | cut -c 19- | sed 's%:%-%g' | sed 's% %.%g' | sed 's%-%h%3' | sed 's%-%min%3').$PHOTOGRAPHE.jpg"
}
else
{
NOUVEAU_NOM_PHOTO="$(date -d "1970-01-01 UTC + `stat "$NOM_PHOTO" --printf=%Y` seconds" +%Y-%m-%d.%Hh%Mmin%S).$PHOTOGRAPHE.$EXTENSION"
}
fi
# On prend le md5sum du futur ancien fichier
MD5_NOM_PHOTO=$(md5sum "$NOM_PHOTO" | cut -c -32)
# On renomme seulement si la destination n'existe pas encore (Utile pour le mode rafale)
if ! [ -e "$NOUVEAU_NOM_PHOTO" ]; then
{
mv -f "$NOM_PHOTO" "$NOUVEAU_NOM_PHOTO"
}
fi
# On prend le md5sum du nouveau fichier
MD5_NOUVEAU_NOM_PHOTO=$(md5sum "$NOUVEAU_NOM_PHOTO" | cut -c -32)
# On compare le md5 de l'ancien fichier et du nouveau et on dit si ça s'est bien passé
if [ "$MD5_NOM_PHOTO" = "$MD5_NOUVEAU_NOM_PHOTO" ]; then
{
echo -e "$NOM_PHOTO >> $NOUVEAU_NOM_PHOTO [\E[32;40mOK\033[0m]"
echo "$NOM_PHOTO;$NOUVEAU_NOM_PHOTO" >> savefile
}
else
{
echo -e "$NOM_PHOTO >> $NOUVEAU_NOM_PHOTO [\E[31;40mFAILED\033[0m]"
}
fi
done
}
fi
# Mode Reverse
if [ "$2" = "reverse" ]; then
{
NOMBRE_A_DENOMMER=$(cat "savefile" | wc -l)
I=0
while [ "$I" -lt "$NOMBRE_A_DENOMMER" ]; do
I=$(($I+1))
NOM_PHOTO=$(cat "savefile" | sed -n "$I p" | awk -F ";" '{print $1}')
NOUVEAU_NOM_PHOTO=$(cat "savefile" | sed -n "$I p" | awk -F ";" '{print $2}')
mv -f "$NOUVEAU_NOM_PHOTO" "$NOM_PHOTO"
echo -e "$NOM_PHOTO << $NOUVEAU_NOM_PHOTO [\E[32;40mOK\033[0m]"
done
}
fi
EXPLICATION :
Se lance de la manière suivante :
$ sh renommer_photos.sh "$1" $2 #1
$ renommer_photos.sh "$1" $2 #2
#1 : Marche à tous les coups
#2 : Il faut avoir fait chmod ché_pas_koi sur le fichier
Vous remplacez $1 par le répertoire ou se trouvent les photos.
Si $2 est remplacé par
reverse le script va "dénommer".
À l'exécution vous est demandé le nom du photographe.
Si le fichier n'a pas pour extension jpg, donc probablement pas de données exif, on utilise la date de dernière modification.
Le dénommage : Lorsque vous avez renommé un paquet de photo, le fichier
savefile est créé afin de pouvoir revenir à l'état précédent. Il est de la forme :
Ancien_nom1.jpg;Nouveau_nom1.jpg
Ancien_nom2.jpg;Nouveau_nom2.jpg
Ancien_nom3.jpg;Nouveau_nom3.jpg
...
EXEMPLE :
Répertoire :
pmd@polonux:~$ sh .script_pmd/renommer_photos.sh "/media/sda2/photos/test"
Nom du photographe : pmd
PICT0001.jpg >> 2008-06-13.20h52min21.pmd.jpg [OK]
PICT0002.jpg >> 2008-06-15.19h43min10.pmd.jpg [OK]
PICT0003.jpg >> 2008-06-15.21h20min54.pmd.jpg [OK]
PICT0004.mp4 >> 2008-06-19.12h48min50.pmd.mp4 [OK]
PICT0005.mp4 >> 2008-06-19.12h49min20.pmd.mp4 [OK]
PICT0006.jpg >> 2008-06-19.14h10min25.pmd.jpg [OK]
PICT0007.jpg >> 2008-06-19.16h28min34.pmd.jpg [OK]
pmd@polonux:~$ sh .script_pmd/renommer_photos.sh "/media/sda2/photos/test" reverse
PICT0001.jpg << 2008-06-13.20h52min21.pmd.jpg [OK]
PICT0002.jpg << 2008-06-15.19h43min10.pmd.jpg [OK]
PICT0003.jpg << 2008-06-15.21h20min54.pmd.jpg [OK]
PICT0004.mp4 << 2008-06-19.12h48min50.pmd.mp4 [OK]
PICT0005.mp4 << 2008-06-19.12h49min20.pmd.mp4 [OK]
PICT0006.jpg << 2008-06-19.14h10min25.pmd.jpg [OK]
PICT0007.jpg << 2008-06-19.16h28min34.pmd.jpg [OK]
pmd@polonux:~$
savefile :
PICT0001.jpg;2008-06-13.20h52min21.pmd.jpg
PICT0002.jpg;2008-06-15.19h43min10.pmd.jpg
PICT0003.jpg;2008-06-15.21h20min54.pmd.jpg
PICT0004.mp4;2008-06-19.12h48min50.pmd.mp4
PICT0005.mp4;2008-06-19.12h49min20.pmd.mp4
PICT0006.jpg;2008-06-19.14h10min25.pmd.jpg
PICT0007.jpg;2008-06-19.16h28min34.pmd.jpg