#!/usr/local/bin/perl use strict; my $DEBUG=0; #set to 2 to actually see hash tables my $filenameprefix=""; my $filename=""; my $info=""; my $tmpdateinfo=""; my $filenameprefix=""; my $SKIP=""; my $original_filename=""; use Image::ExifTool 'ImageInfo'; while ($filename=<>) { chomp $filename; $SKIP=1; if ($filename =~ /\.jpg$/i) { $SKIP=0; } if ($filename =~ /\.raw$/i) { $SKIP=0; } #no clue if RAW files have EXIF or not if ($filename =~ /\.wav$/i) { $SKIP=0; } #wikipedia says WAV can have exif if ($filename =~ /\.tiff$/i) { $SKIP=0; } #wikipedia says TIFF can have exif if ($SKIP) { next; } $original_filename=$filename; if ($DEBUG) { print "filename is $filename\n"; } $info = &ImageInfo($filename); if ($DEBUG>1) { foreach my $key (sort keys %$info) { print "key=$key, data=$info->$key\n"; } } $tmpdateinfo = $info->{DateTimeOriginal}; if ($DEBUG>0) { print "tmpdateinfo for $filename is \"$tmpdateinfo\"\n"; } $tmpdateinfo =~ /^([0-9]{4}):([01][0-9]):([0-3][0-9])/; if ($DEBUG>0) { print "for $filename, \$1=$1,\$2=$2,\$3=$3\n"; } $filenameprefix = $1 . $2 . $3; if ($filenameprefix ne "") { $filenameprefix .= " - "; } if ($DEBUG>0) { print "fileprefix for $filename is $filenameprefix\n"; } ##### BONUS FUNCTIONALITY; CLEAN UP THE NAME A BIT: $filename =~ s/_IMG.JPG/.jpg/i; print qq[mv "$original_filename" "$filenameprefix$filename"\n]; }