眠れないので暇つぶしに
これをちょっと書き直したりしてみた。こんな感じ。
#!usr/bin/perl use File::Basename qw/basename fileparse/; BEGIN { unless (@ARGV) { my $self = basename $0; warn <<"HERE"; ERR: $self needs arguments. usage: $self path [path...] HERE exit; } } use strict; use warnings; use File::Find qw/find/; use File::Spec; use Image::ExifTool; my %date; my $exif = Image::ExifTool->new; find sub { if (-f) { my $inf = $exif->ImageInfo($_) or return; my $create = $inf->{CreateDate}; if (!$create) { warn qq/WAR: Can't get "CreateDate" information of "$file"\n/; return; } foreach ($create) { s/://g; s/ /_/g; } $date{File::Spec->rel2abs($_)} = $create; } }, @ARGV; foreach my $file (sort {$date{$a} cmp $date{$b}} keys %date) { my (undef, $path, $ext) = fileparse($file, qr/\.[^.]+$/); my $old = File::Spec->abs2rel($file); my $new = File::Spec->abs2rel(File::Spec->catfile($path, "$date{$file}$ext")); rename $old, $new or die "ERR : $!"; print qq/INF: Renamed successfully : "$old" -> "$new"\n/; } exit;
あんまり、っていうか綺麗じゃないね。使わないから別にいいや。