mdb@ESD.3Com.COM (Mark D. Baushke) (09/09/90)
On 7 Sep 90 15:31:31 GMT, pac@cathedral.cerc.wvu.wvnet.edu (Michael A.
Packer) said:
Michael> does anyone have a routine which can be compiled on UNIX that
Michael> will read the current directory and convert all upcase names
Michael> to lowercase?
Michael> if there was a file called
Michael> READ.ME it would simply be converted to read.me
Michael> maybe some kind of script ???
A perl script perhaps? See below.
--
Mark D. Baushke
mdb@ESD.3Com.COM
#!/usr/local/bin/perl
#
# rename-uppercase-files.pl --- rename uppercase files to lowercase
#
# Author : Mark D. Baushke
# Created On : Sat Sep 8 11:23:23 1990
# Last Modified By: Mark D. Baushke
# Last Modified On: Sat Sep 8 11:36:54 1990
# Update Count : 1
# Status : Alpha release 0.1
#
# Convert any files in the given directories with uppercase file names
# into lowercase file names. Default to using the current directory.
unshift(@ARGV, '.') if $#ARGV < $[; # if no dir args use current directory
directory:
while($ARGV = shift) {
if (! -d ($dir = $ARGV)) {
print STDERR "Usage: $0 [directory]...\n".
"$dir is not a directory...skipped\n";
next directory;
}
# Get all files in the dir. Use readdir since it is faster than
# globbing, but also because we should to include .-files.
opendir (DIR, $dir) || die "$!: $dir\nStopped";
@all = readdir (DIR);
closedir (DIR);
print STDERR "Processing '$dir' begins.\n";
$cnt = 0;
for $file ( @all ) {
# If a file has an uppercase character in it it should be converted
if ($file =~ /[A-Z]/) {
($newfile = $file) =~ tr/A-Z/a-z/;
# Do not clobber any existing files
if ( -e $dir."/".$newfile ) {
print STDERR "$dir/$newfile already exists. ".
"$dir/$file not renamed.\n";
}
else {
rename($dir."/".$file, $dir."/".$newfile) ||
die "Unable to rename $dir/$file: $!";
$cnt++;
}
}
}
print STDERR "Processing '$dir' complete. $cnt files renamed.\n";
}