ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

Planet Ubuntu-fr - scripts

Fil des billets

samedi, août 18 2007

Gravatar de adminRenommer massivement en 2 clics des fichiers ou dossiers avec Nautilus via Yann Hamon

Pour faire suite à ce billet de Racoon qui présente GPRename, voila une petite mise à jour de sa procédure d'installation en version 2.4 sous Ubuntu et la façon de l'intégrer simplement dans Nautilus via les Nautilus-scripts ou les Nautilus-actions.

Présentation :


GPRename est un ensemble de scripts perl sous licence GNU/GPL qui permet, via une interface graphique en GTK2, de renommer massivement des fichiers ou des dossiers en leur appliquant un traitement particulier.

Installation :

Dépendances :

sudo apt-get install gettext libgtk-perl

GPRename 2.4 :

Télécharger l'archive gprename-2.4.tar.bz2 puis la décompresser :
tar xvjf gprename-2.4.tar.bz2
Dans le dossier gprename-2.4
cd gprename-2.4
sudo make install
Voila c'est installé, vous pouvez lancer GPrename en invoquant la commande gprename ou à partir menu Accessoires / GPRename


Pour les adeptes du copier / coller, la méthode installation en une ligne de commande :
sudo apt-get install gettext libgtk-perl && wget http://downloads.sourceforge.net/gprename/gprename-2.4.tar.bz2 && tar -xvjf gprename-2.4.tar.bz2 && cd gprename-2.4 && sudo make install

Intégration dans Nautilus :

Via Nautilus-actions :

Si ce n'est pas déja fait, installer le paquet nautilus-actions
apt-get install nautilus-actions
Importer l'action Batch Rename (fichier config_38643db8-62c7-44e1-96ee-98fc9360a2cd.schemas), menu Système / Préférences / Configuration des actions Nautilus / Importer. Il suffira par la suite, après avoir sélectionner les fichiers à renommer, de faire un clic droit / Batch Rename

Via Nautilus-scripts :

Créer le script bash GPrename.sh :
#!/bin/bash
gprename "$1"
Le copier dans le dossier ~/.gnome2/nautilus-scripts puis le rendre exécutable
cp GPrename.sh ~/.gnome2/nautilus-scripts
chmod +x ~/.gnome2/nautilus-scripts/GPrename.sh
Il suffira par la suite, après avoir sélectionner les fichiers à renommer, de faire un clic droit / Scripts / GPrename.sh

Références :

mardi, juillet 17 2007

Gravatar de adminScript de renommage de photos selon les données EXIF via Yann Hamon

Avec les photos numériques on ne compte pas, on prend des dizaines (voir des centaines) de photos puis on les importe sur le PC pour les trier. Personnellement j'utilise gThumb car il est léger, simple à utiliser, n'est pas usine à gaz, dispose de fonctionnalités assez avancées et en plus est intégré nativement dans Ubuntu. Le premier de ces tris est le renommage, j'ai l'habitude de renommer mes photos en fonction de la date de prise de vue (+ une numérotation) ce qui permet par la suite d'effectuer un tri chronologique dans l'explorateur de fichiers et d'avoir un nom unique.

il est possible de renommer massivement des photos en fonction des données EXIF avec gThumb mais le meilleur résultat que j'ai pu en tirer est un nom de fichier sous la forme 2006-11-04--19.41.56_007.jpg. C'est presque le résultat attendu sauf que je n'ai pas trouvé le moyen d'enlever le double tiret et les secondes qui sont superflus. Voila le pourquoi de ce script, utilisé via les scripts nautilus, en deux clics il permet de renommer une série de photos sous la forme 2006-11-04_19.41_007.jpg

Dépendances :

$ sudo apt-get install imagemagick zenity

Script exif_photos_rename_v1.1.sh :

  • 27/07/07 - v1.1
    • Réorganisation
    • Choix du début de numérotation, par défaut à 1
  • 15/07/07 - v1.0
    • Création
#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr -                                                          #
############################################################################################
# Script exif_photos_rename_v1.1.sh                                                        #
# Licence : GNU / GPL                                                                      #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme :                                #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext  => ex : 2006-11-04_19.41_007.jpg           #
# Fonctionne pour une numérotation de 001 à 999                                            #
############################################################################################
# Dépendances                                                                              #
############################################################################################
#  - Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick                #
#  - Nécessite le paquet zenity                                                            #
#    => sudo apt-get install imagemagick 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                         #
############################################################################################
## Variables
nb_param="$#" # nb de paramètres passés au script
erreur=0 # initialisation du compteur d'erreurs à 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 # si fermeture
                        exit 1
                fi
                        [ $? -ne 0 ] && exit 2 # si annulation
}

## Fonctions renommage des fichiers
rename_jpeg ()
{
        for parametre in "$@"; # pour chaque fichier selectionné
        do # faire
                old_name="$parametre" # on définie le nom du fichier actuel
                date_time=`identify -format "%[EXIF:DateTime]" "$parametre"` # création de la variable date / heure de la photo (ex: 2006:11:04 19:41:30. )
                extension=`echo $parametre | awk -F "." '{print $NF}'` # création de la variable extension du fichier (ex : .jpg)     
                aa=`echo $date_time | cut -d: -f1` # création de la variable année (ex : 2006)
                mm=`echo $date_time | cut -d: -f2` # création de la variable mois (ex : 11)
                jj=`echo $date_time | cut -d: -f3 | cut -c1-2` # création de la variable jour (ex : 04)
                hh=`echo $date_time | cut -d: -f3 | cut -c4-5` # création de la variable heure (ex : 19)
                min=`echo $date_time | cut -d: -f4` # création de la variable minute (ex: 41)
                # création de la variable numérotation       
                if [ $numParam -gt 0 ] && [ $numParam -lt 10 ]; then # pour les paramètres 1 à 9
                        numero=00$numParam # rajouter 2 digit => 001, 002, 003,..., 009
                fi
                if [ $numParam -gt 9 ] && [ $numParam -lt 100 ]; then # pour les paramètres 10 à 99
                        numero=0$numParam # rajouter 1 digit => 010, 011, 012,..., 099
                fi
                if [ $numParam -gt 100 ] ; then # pour les paramètres supérieur à 100
                        numero=$numParam # ne pas rajouter de digit => 100, 101, 102,...
                fi           
                new_nane=`echo ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.${extension}` # on définie le nouveau nom => 2006-11-04_19.41_num.jpg
                cp "$old_name" "${new_nane}" # on renomme le fichier en le copiant
                if [ $? = 0 ] ; then # si la copie a reussi    
                        echo "${old_name} => ${new_nane} .... OK"
                        rm -f "$old_name" # => supprime le fichier original
                else # si la copie a echoué
                        echo "Impossible de renommer $old_name .... NOK" # => message d'erreur
                        let $[erreur += 1] # incrémentation du compteur d'erreur
                fi
                let $[numParam += 1] # incrémentation du numéro de paramètre
        done
        nb_renomme=$(( $nb_param - $erreur )) # création de la variable nombre de fichiers renommés
        echo "-----------------------------------------"               
        echo "Fin de traitement : $# fichiers "
        echo "-----------------------------------------"
        echo "Fichiers renommes : $nb_renomme"
        echo "Fichiers en erreur : $erreur"
        echo "-----------------------------------------"
        echo "OK, vous pouvez fermer !"
}

## Traitement
if [ "$#" -eq 0 ]; then # si aucun fichier n'est selectionné => mesage d'erreur
        zenity --error --title="error" --text="Selectioner au moins 1 fichier"
        exit 1
fi
début_numerot
rename_jpeg "$@" | zenity --text-info --title "exif_photos_rename" --width=500 --height=500

Mise en place :

Placer le script exif_photos_rename_v1.1.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable

$ sudo chmod +x ~/.gnome2/nautilus-scripts/exif_photos_rename_v1.1.sh

Utilisation :

Sélectionner les photos à traiter, puis clic droit / Scripts / exif_photos_rename.sh exif_photos_rename_01.png

Cliquer sur Valider ou modifier le début de numérotation le cas échéant : exif_photos_rename_00.png

Résultat :

exif_photos_rename_02.png

exif_photos_rename_03.png

NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien ;)