http://www.perlmonks.org?node_id=520929


in reply to Renaming picture in folders...

You don't say whether the progressive number is per folder or for the whole run - I've gone for per-folder here - if you want for the whole run then change the hash $num{$dir} to a scalar $num instead.
#!/usr/bin/perl use strict; use warnings; use File::Find; use File::Copy; # # Set this to 0 to turn off printing which files it's moving. # my $verbose = 1; my @dirs = qw( Folder_1 Folder_2 Folder_3 Folder_4 ); my %num; sub wanted { if ( -f $_ ) { my $dir = $File::Find::dir; $num{$dir}++; my $src = "$dir/$_"; my $target = "${dir}_$num{$dir}.jpg"; my $mv_msg = "move '$src' to '$dir/$target'"; if ( -f $target ) { die "Can't $mv_msg: File already exists!\n" } else { move( $_, $target ) || die "Can't $mv_msg: $!\n"; print "$mv_msg OK\n" if ($verbose); } } } File::Find::find( { wanted => \&wanted }, @dirs );
I'm also presuming here that you want them left in the same directory they were in - not moved up.

Replies are listed 'Best First'.
Re^2: Renaming picture in folders...
by A200560 (Novice) on Jan 04, 2006 at 17:41 UTC
    Thanks serf, very useful, I optimized (for SEO purposes) an images gallery of about 4000 images. Thanks and Happy New Year!