in reply to Re: renaming files
in thread renaming files
If you change:
s/\.TMB$/T\.JPG/;
...to:
s/\.TMB/T.JPG/i;
...you'll catch all cases of all cases. ;]
Meanwhile, here's a total treatment with a bit of commentary; it uses some neat grep tricks a friend taught me a while back to narrow the list of files before you start processing. I've only tested it a little but it should be correct.
Cheers!
--j
#!/usr/bin/env perl
#
# mvThumbs:
# A quick script to move thumbnails
#
use strict;
use Cwd;
if (! @ARGV) {
# We need arguments, durnit!
warn "${0}: Insufficient arguments\n";
warn "Syntax: $0 <dirName> ...\n";
exit(1);
}
# They may give us directory paths which are relative to where we are,
# so let's be sure of where we are, eh?
my $origCWD = cwd();
foreach my $dirName (@ARGV) {
unless (-d $dirName) {
warn ">>> $dirName is not a directory ... skipping.\n";
} else {
# Can we write here? If not, we may as well skip it
unless (-w $dirName) {
warn ">>>> No write permissions in $dirName ... skipping\n";
} else {
# Get the list of thumbnails in this directory
opendir(thumbDir, $dirName);
my @thumbList = grep /\.TMB$/i, readdir(thumbDir);
closedir(thumbDir);
# To be lazy about having to construct pathnames, we'll just
# move to the directory we're working with.
chdir($dirName);
print "\nIn directory: $dirName\n";
# Run through the list and rename 'em
foreach my $thumbFile (@thumbList) {
my $newFile = $thumbFile;
$newFile =~ s/\.TMB$/T.JPG/i;
# You could force the filename into lower or upper case here
# $newFile = lc($newFile);
# $newFile = uc($newFile);
unless (-e $newFile) {
printf("%-30s => %s\n",$thumbFile, $newFile);
rename($thumbFile, $newFile);
} else {
warn ">>> Can't move $thumbFile => $newFile in $dirName;\n";
warn ">>> $newFile already exists. Skipping.\n";
}
}
# Back to home base for the next one
chdir($origCWD);
}
}
}
print "\nAll done!\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Only Works in UPPER CASE
by fundflow (Chaplain) on Jan 04, 2001 at 03:28 UTC |