Script pour renommer des photos selon la date de leur prise
13 réponses
Guillaume
Bonjour =E0 tous.
Qui saurait me dire comment faire la (lourde) t=E2che suivante ?
J'ai tout un tas de photos issues de mon appareil photo num=E9rique en .jpg=
qui=20
sont class=E9es n'importe comment et j'aimerais les renommer en fonction de=
la=20
date =E0 laquelle elles ont =E9t=E9 prises, c'est-=E0-dire faire en sorte q=
ue ma photo=20
nomm=E9e img_0258.jpg prise le 30 mars 1998 s'appelle d=E9sormais 08_03_30.=
jpg...
Avec l'id=E9e de commencer par l'ann=E9e, de fa=E7on =E0 pouvoir les trier =
plus=20
facilement .
Apr=E8s, la question est : que faire quand plusieurs photos ont =E9t=E9 pri=
ses le=20
m=EAme jour ?
Ben, il faudrait pouvoir pousser le vice =E0 ajouter l'heure de prise, du g=
enre=20
08_03_30_15h24.jpg=20
Quelqu'un aurait-il l'esprit suffisamment tordu pour m'aider ?
Merci d'avance !
Guillaume
=2D-=20
Garanti 0% Micro$oft
Envoy=E9 sous Debian
=2D--
Pourquoi payer des logiciels inutiles =E0 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-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
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 with a subject of "unsubscribe". Trouble? Contact
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-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
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 with a subject of "unsubscribe". Trouble? Contact
Gaël - InternetCom
OUPS !!! Désolé pour le trompage de sujet !! Mille excuses ...
Le Fri, 30 Jan 2009 19:28:34 +0100, Gaël - InternetCom 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 with a subject of "unsubscribe". Trouble? Contact
OUPS !!!
Désolé pour le trompage de sujet !!
Mille excuses ...
Le Fri, 30 Jan 2009 19:28:34 +0100, Gaël - InternetCom
<gael@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-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
OUPS !!! Désolé pour le trompage de sujet !! Mille excuses ...
Le Fri, 30 Jan 2009 19:28:34 +0100, Gaël - InternetCom 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 with a subject of "unsubscribe". Trouble? Contact
Francois Mescam
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 STDINn" if $verbose; @ARGV = <STDIN>; chop(@ARGV); }
my $t = `mktemp -t renommePhoto.XXXXXX`; 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érentesnCreate Date : $datenDate/Time Original: $dateOrignModify Date : $dateDign" ; }
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 $newn"; } if ( -e $new and !$force ) { warn "$was not renamed: $new already existsn"; } elsif ($no_act or rename $was, $new) { print "$was renamed as $newn" 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
This code was copyrighted in 2005, and is released under the same terms as Perl itself.
-- 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 with a subject of "unsubscribe". Trouble? Contact
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 STDINn" if $verbose;
@ARGV = <STDIN>;
chop(@ARGV);
}
my $t = `mktemp -t renommePhoto.XXXXXX`; 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érentesnCreate Date :
$datenDate/Time Original: $dateOrignModify Date : $dateDign" ;
}
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 $newn";
}
if ( -e $new and !$force ) {
warn "$was not renamed: $new already existsn";
} elsif ($no_act or rename $was, $new) {
print "$was renamed as $newn" 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 <Francois@mescam.org>
This code was copyrighted in 2005, and is released under the same terms
as Perl
itself.
--
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-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
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 STDINn" if $verbose; @ARGV = <STDIN>; chop(@ARGV); }
my $t = `mktemp -t renommePhoto.XXXXXX`; 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érentesnCreate Date : $datenDate/Time Original: $dateOrignModify Date : $dateDign" ; }
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 $newn"; } if ( -e $new and !$force ) { warn "$was not renamed: $new already existsn"; } elsif ($no_act or rename $was, $new) { print "$was renamed as $newn" 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
This code was copyrighted in 2005, and is released under the same terms as Perl itself.
-- 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 with a subject of "unsubscribe". Trouble? Contact