スマホで撮影した写真のファイル名が被る場合の整理方法
とある事情で写真の整理をしています。
大ざっぱだけどこんなディレクトリ状態。規則性あるようにも見えるけど実際の所規則性なんてのはない。
hoge/ hoge/2013/aaa.jpg hoge/2013/bbb.jpg hoge/2013/ccc.jpg hoge/2014/05/aaa.jpg hoge/2014/05/bbb.jpg hoge/201405-2014-07/aaa.JPG hoge/201405/マルチバイト文字列/aaa.JPG
大量にかつ複雑なディレクトリの中にあるファイルを一個ずつ見て回ると、どのディレクトリまでみたのか分からなくなって混乱してきた。
一覧でみたいんじゃあああと、直下に集約しようとすると今度はファイル名が被ってるので上書きしてしますか?とか聞いてきたので、ついカッとなって撮影日付で置換して直下に置くスクリプト書いた。
過去に書いた二つの記事の合わせ技
use Image::ExifTool; use Path::Class::Dir; Path::Class::Dir->new("./")->recurse( callback => sub { my $f = shift->stringify; return if -d $f; return unless $f =~ m{\.jpg$}i; my $it = 'Image::ExifTool'->new; $it->ImageInfo($f); my $dt = $it->GetValue('DateTimeOriginal'); $dt =~ s/[: ]//g; $dt = $dt . '.jpg'; print $f . ' -> ' . $dt ."\n"; rename($f, $dt); } )