Re: Script pour renommer des photos selon la date de leur prise
Christophe Diaz wrote: 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 et moi celui-ci ___ #!/usr/bin/perl -w use strict; use Getopt::Long; use Pod::Usage; # dépend de exiftool qui est dans libimage-exiftool-perl Getopt::Long::Configure(bundling,no_ignore_case_always); my ($verbose, $no_act, $force, $op); pod2usage(2) unless GetOptions ('help|h' = sub { pod2usage(1); }, 'man' = sub { pod2usage(-verbose = 2); }, 'v|verbose'= \$verbose, 'n|no-act' = \$no_act, 'f|force' = \$force, ) and $op = shift; $verbose++ if $no_act; if (!...@argv) { print reading filenames from STDIN\n if $verbose; @ARGV = STDIN; chop(@ARGV); } my $t = `mktemp -t renommePhoto.XX`; chomp($t); for (@ARGV) { my $was = $_; eval $op; die $@ if $@; my $new = $_; system(exiftool $was|grep Date $t); my ($date,$dateOrig,$dateDig); my $l; open (LEC,$t) or die Echec open $t $!\n; while (LEC) { $l = $_; if ( $l = /Create Date * : (.*)$/ ) { $date = $1; } elsif ( $l = /Date\/Time Original * : (.*)$/ ) { $dateOrig = $1; } elsif ( $l = /Modify Date * : (.*)$/ ) { $dateDig = $1; } } close LEC; if ( ($date ne $dateOrig) or ($date ne $dateDig) ) { die fichier $was dates différentes\nCreate Date : $date\nDate/Time Original: $dateOrig\nModify Date : $dateDig\n ; } my $indice; if ($date =~ /..([0-9]+):([0-9]+):([0-9]+) ([0-9]+):([0-9]+):([0-9]+)$/) { $indice = $1$2$3$4$5$6; } else { die fichier $was date $date indice ?\n; } $new = $indice.$new; if ( $was eq $new ) { die was $was new $new\n; } if ( -e $new and !$force ) { warn $was not renamed: $new already exists\n; } elsif ($no_act or rename $was, $new) { print $was renamed as $new\n if $verbose; } else { warn Can't rename $was $new: $!\n; } } unlink($t); exit 0; =head1 NAME renommePhoto.pl - renommer des photos en mettant la date en début du nom =head1 SYNOPSIS renommePhoto.pl idem rename =head1 DESCRIPTION Objet : renommer des photos en mettant en tête du nom la date de prise de la photo en évitant les doubles avec un indice sur une lettre Le motif est appliqué sur le nom de fichier lu pour le renommer avant de lui ajouter en tête la date. =head1 AUTHOR F.Mescam franc...@mescam.org This code was copyrighted in 2005, and is released under the same terms as Perl itself. =cut -- -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Script pour renommer des photos selon la date de leur prise
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... Avec l'idée de commencer par l'année, de façon à pouvoir les trier plus facilement . Après, la question est : que faire quand plusieurs photos ont été prises le même jour ? Ben, il faudrait pouvoir pousser le vice à ajouter l'heure de prise, du genre 08_03_30_15h24.jpg Quelqu'un aurait-il l'esprit suffisamment tordu pour m'aider ? Merci d'avance ! Guillaume -- Garanti 0% Micro$oft Envoyé sous Debian --- Pourquoi payer des logiciels inutiles à l'achat d'un ordinateur neuf ? http://www.racketiciel.info -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Script pour renommer des photos selon la date de leur prise
Le Fri, Jan 30, 2009 at 03:30:51PM +0100, Guillaume ecrivait : Qui saurait me dire comment faire la (lourde) tâche suivante ? [snip] Ben, il faudrait pouvoir pousser le vice à ajouter l'heure de prise, du genre 08_03_30_15h24.jpg Quelqu'un aurait-il l'esprit suffisamment tordu pour m'aider ? même pas besoin de l'esprit tordu : jhead fait ça très bien. David. -- Chronique, Articles, Projets libre - http://www.cure.nom.fr/ Association FINIX : Finistere *nix- http://www.Finix.EU.Org/ Le temps n'est pas important, seule la vie est importante L5E signature.asc Description: Digital signature
Re: Script pour renommer des photos selon la date de leur prise
David Cure a écrit : Le Fri, Jan 30, 2009 at 03:30:51PM +0100, Guillaume ecrivait : Qui saurait me dire comment faire la (lourde) tâche suivante ? [snip] Ben, il faudrait pouvoir pousser le vice à ajouter l'heure de prise, du genre 08_03_30_15h24.jpg Quelqu'un aurait-il l'esprit suffisamment tordu pour m'aider ? même pas besoin de l'esprit tordu : jhead fait ça très bien. David. Si j'avais su plus tôt... J'ai plusieurs fois installé le paquet exif et construit une commande du genre : for i in *.JPG; do mv $i `exif -i $i | grep 9003 | cut -d\| -f2 | cut -d\ -f1-2 | sed 's/://g;s/ /_/'`-`echo $i | sed 's/IMG.//;s/.JPG/.jpg/'`;done; Comme ca, il y a la date, l'heure et le numero de sequence. C'est du (moyen)quick-and-(very)dirty, mais ca marche à condition d'avoir le paquet exif En général, je retourne les photos qui possèdent l'indicateur d'orientation pour que tous les logiciels les ouvrent correctement et je fais recalculer l'icone embarquée avec le paquet exiftran : exiftran -gi *.jpg Fanfan -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Script pour renommer des photos selon la date de leur prise
Le vendredi 30 janvier 2009, à 15:45:37, David a écrit : même pas besoin de l'esprit tordu : jhead fait ça très bien. Oui, avec l'aide trouvée là grâce à ta piste : http://www.sentex.net/~mwandel/jhead/usage.html Et la syntaxe suivante : jhead -n%Y_%m_%d-%H_%M_%S *.jpg Merci pour les réponses. Guillaume -- Garanti 0% Micro$oft Envoyé sous Debian --- Pourquoi payer des logiciels inutiles à l'achat d'un ordinateur neuf ? http://www.racketiciel.info -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Script pour renommer des photos selon la date de leur prise
Moi j'utilise ca qui fonctionne aussi très bien : for i in *.JPG ; do mv $i `/usr/bin/jhead $i | grep Date/Time | sed 's/:/-/'g | sed 's/Date\/Time- //' | sed 's/\ /_/' | sed 's/$/.JPG/'` ; done A+ Guillaume a écrit : Le vendredi 30 janvier 2009, à 15:45:37, David a écrit : même pas besoin de l'esprit tordu : jhead fait ça très bien. Oui, avec l'aide trouvée là grâce à ta piste : http://www.sentex.net/~mwandel/jhead/usage.html Et la syntaxe suivante : jhead -n%Y_%m_%d-%H_%M_%S *.jpg Merci pour les réponses. Guillaume
Re: Script pour renommer des photos selon la date de leur prise
excellent ! et hyper utile, merci David aptitude install jhead jhead -nobs_%Y_%m_%d_a_%Hh%M_%S *.jpg y'a plus qu'à bien régler l'heure de l'appareil photo. + Ben, il faudrait pouvoir pousser le vice à ajouter l'heure de prise, du genre + 08_03_30_15h24.jpg + + Quelqu'un aurait-il l'esprit suffisamment tordu pour m'aider ? + + même pas besoin de l'esprit tordu : jhead fait ça très bien. + + David.
Re: Script pour renommer des photos selon la date de leur prise
Guillaume a écrit, vendredi 30 janvier 2009, à 16:26 : Le vendredi 30 janvier 2009, à 15:45:37, David a écrit : même pas besoin de l'esprit tordu : jhead fait ça très bien. Oui, avec l'aide trouvée là grâce à ta piste : http://www.sentex.net/~mwandel/jhead/usage.html Et la syntaxe suivante : jhead -n%Y_%m_%d-%H_%M_%S *.jpg Tu peux être embêté avec un appareil prenant des photos en rafale... Il me semble souhaitable de préserver le numéro de 4 chiffres défini par l'appareil. -- Jacques L'helgoualc'h -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
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 - -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Script pour renommer des photos selon la date de leur prise
Le vendredi 30 janvier 2009, à 17:01:09, Jacques a écrit : Tu peux être embêté avec un appareil prenant des photos en rafale... Il me semble souhaitable de préserver le numéro de 4 chiffres défini par l'appareil. J'ai eu le souci suivant : mon APN est tombé en rade, je l'ai envoyé au SAV qui a changé je ne sais plus quelle grosse pièce et je me retrouve avec un compteur d'appellation des photos réinitialisé ; si bien que j'ai des premières photos prises quand j'ai eu mon APN au début que j'ai effacées depuis de la carte et stockées sur mon portable et des photos actuelles qui ont le même nom. D'où l'idée de shunter ce petit pb en passant par la date :-P Guillaume -- Garanti 0% Micro$oft Envoyé sous Debian --- Pourquoi payer des logiciels inutiles à l'achat d'un ordinateur neuf ? http://www.racketiciel.info -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Script pour renommer des photos selon la date de leur prise
François Cerbelle a écrit, vendredi 30 janvier 2009, à 15:59 : David Cure a écrit : Le Fri, Jan 30, 2009 at 03:30:51PM +0100, Guillaume ecrivait : Qui saurait me dire comment faire la (lourde) tâche suivante ? [snip] Ben, il faudrait pouvoir pousser le vice à ajouter l'heure de prise, du genre 08_03_30_15h24.jpg Quelqu'un aurait-il l'esprit suffisamment tordu pour m'aider ? même pas besoin de l'esprit tordu : jhead fait ça très bien. Oui, mais les renommages sont limités à l'aspect date. Si j'avais su plus tôt... J'ai plusieurs fois installé le paquet exif et construit une commande du genre : for i in *.JPG; do mv $i `exif -i $i | grep 9003 | cut -d\| -f2 | cut -d\ -f1-2 | sed 's/://g;s/ /_/'`-`echo $i | sed 's/IMG.//;s/.JPG/.jpg/'`;done; Comme ca, il y a la date, l'heure et le numero de sequence. C'est du (moyen)quick-and-(very)dirty, mais ca marche à condition d'avoir le paquet exif On doit pouvoir simplifier ;) --- mais exiftool offre plus de souplesse ,(man exiftool, - RENAMING EXAMPLES) | | exiftool '-DirectoryDateTimeOriginal' -d %Y/%m/%d dir | Move all files in dir into a directory hierarchy based on | year, month and day of DateTimeOriginal. ie) This command | would move the file dir/image.jpg with a DateTimeOriginal | of 2005:10:12 16:05:56 to 2005/10/12/image.jpg. | | exiftool '-filename%f_${focallength}.%e' dir | Rename all files in dir by adding FocalLength to the file | name. | | exiftool '-FileNameCreateDate' -d %Y%m%d_%H%M%S.%%e dir | Rename all images in dir according to the CreateDate date | and time, preserving the original file extensions. Note the | extra '%' added to the file extension code (%%e) since it is | used in a date format string. | | exiftool -r '-FileNameCreateDate' -d %Y-%m-%d/%H%M_%%f.%%e dir | Both the directory and the filename may be changed together via | the FileName tag if the new FileName contains a '/'. The | example above recursively renames all images in a directory by | adding a CreateDate timestamp to the start of the filename, | then moves them into new directories named by date. | | exiftool'-FileName${CreateDate}_$filenumber.jpg'-d %Y%m%d | dir/*.jpg | Set the filename of all JPG images in the current directory | from the CreateDate and FileNumber tags, in the form | 20060507_118-1861.jpg. | ` Par ailleurs, j'utilise le script gpsPhoto.pl pour créer les champs GPS, je vais donc sans doute pouvoir intégrer tout ça en Perl... -- Jacques L'helgoualc'h -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Script pour renommer des photos selon la date de leur prise
Le Fri, Jan 30, 2009 at 03:59:35PM +0100, François Cerbelle ecrivait : Si j'avais su plus tôt... ;) En général, je retourne les photos qui possèdent l'indicateur d'orientation pour que tous les logiciels les ouvrent correctement et je fais recalculer l'icone embarquée avec le paquet exiftran : exiftran -gi *.jpg on peut tout faire un 1 coup avec jhead, renommage et rotation (avec rotation des imagettes exif) : jhead -n -autorot img_*.jpg David. -- Chronique, Articles, Projets libre - http://www.cure.nom.fr/ Association FINIX : Finistere *nix- http://www.Finix.EU.Org/ Le temps n'est pas important, seule la vie est importante L5E signature.asc Description: Digital signature
Re: Script pour renommer des photos selon la date de leur prise
Guillaume a écrit, vendredi 30 janvier 2009, à 17:09 : Le vendredi 30 janvier 2009, à 17:01:09, Jacques a écrit : Tu peux être embêté avec un appareil prenant des photos en rafale... Il me semble souhaitable de préserver le numéro de 4 chiffres défini par l'appareil. J'ai eu le souci suivant : mon APN est tombé en rade, je l'ai envoyé au SAV qui a changé je ne sais plus quelle grosse pièce et je me retrouve avec un compteur d'appellation des photos réinitialisé ; si bien que j'ai des premières photos prises quand j'ai eu mon APN au début que j'ai effacées depuis de la carte et stockées sur mon portable et des photos actuelles qui ont le même nom. De nombreux appareils continuent la numérotation à partir du dernier numéro présent sur la carte. Tu peux aussi incrémenter celui des photos récentes avec un petit script : bac_a_sable $ touch phot{1000..1017}.jpg bac_a_sable $ rename -v 's/(\d{4})\./($1 + 42)../e' phot*.jpg phot1000.jpg renamed as phot1042.jpg phot1001.jpg renamed as phot1043.jpg phot1002.jpg renamed as phot1044.jpg phot1003.jpg renamed as phot1045.jpg [...] phot1017.jpg renamed as phot1059.jpg D'où l'idée de shunter ce petit pb en passant par la date :-P Par ailleurs, je crois qu'il est préférable de faire des dossiers quotidiens, ou au moins mensuels --- dépasser photos prend tout de même un certain temps... -- Jacques L'helgoualc'h -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Fwd: Re: Script pour renommer des photos selon la date de leur prise
Je l'ai trouvé ici en 2min : http://mirror-fpt-telecom.fpt.net/debian-cd/4.0_r5/ --- Message réexpédié--- De: A: Sujet: Date: Fri, 30 Jan 2009 16:26:46 +0100 Le vendredi 30 janvier 2009, à 15:45:37, David a écrit : même pas besoin de l'esprit tordu : jhead fait ça très bien. Oui, avec l'aide trouvée là grâce à ta piste : http://www.sentex.net/~mwandel/jhead/usage.html Et la syntaxe suivante : jhead -n%Y_%m_%d-%H_%M_%S *.jpg Merci pour les réponses. Guillaume -- Proverbe : Si Microsoft inventait un truc qui ne plante pas, ce serait un clou. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: Fwd: Re: Script pour renommer des photos selon la date de leur prise
OUPS !!! Désolé pour le trompage de sujet !! Mille excuses ... Le Fri, 30 Jan 2009 19:28:34 +0100, Gaël - InternetCom g...@internetcom.tm.fr a écrit: Je l'ai trouvé ici en 2min : http://mirror-fpt-telecom.fpt.net/debian-cd/4.0_r5/ --- Message réexpédié--- De: A: Sujet: Date: Fri, 30 Jan 2009 16:26:46 +0100 Le vendredi 30 janvier 2009, à 15:45:37, David a écrit : même pas besoin de l'esprit tordu : jhead fait ça très bien. Oui, avec l'aide trouvée là grâce à ta piste : http://www.sentex.net/~mwandel/jhead/usage.html Et la syntaxe suivante : jhead -n%Y_%m_%d-%H_%M_%S *.jpg Merci pour les réponses. Guillaume -- Proverbe : Si Microsoft inventait un truc qui ne plante pas, ce serait un clou. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs From et Reply-To: To UNSUBSCRIBE, email to debian-user-french-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org