Operating System - Linux
1753307 Members
6395 Online
108792 Solutions
New Discussion

Re: Script to find any capital letter and change it to lower case?

 
SOLVED
Go to solution
James R. Ferguson
Acclaimed Contributor

Re: Script to find any capital letter and change it to lower case?

Hi (again):

Clay makes an excellent point! We can easily handle this and cleanup the problem PCS noted:

# cat ./rename
#!/usr/bin/perl
#@(#)rename $ Find files with uppercase letters and lowercase - JRF $
use strict;
use warnings;
use Cwd;
use File::Basename;
use File::Find;

my @path = @ARGV ? @ARGV : getcwd() =~ m{^/$} ? ('/') : ('.');
my @files = ();
my ( $dirname, $basename, $oldname, $newname );

find( sub { push( @files, $File::Find::name ) if -f $_ && m/[A-Z]+/ },
@path );

for $oldname (@files) {
$dirname = dirname($oldname);
$basename = basename($oldname);
( $newname = $basename ) =~ tr [A-Z] [a-z];
$newname = $dirname . '/' . $newname;
if ( -f $newname ) {
print STDERR "'$oldname' not renamed; '$newname' exists!\n";
}
else {
rename( $oldname, $newname )
or print STDERR "'$oldname' not changed\n";
}
}
1;

Regards!

...JRF...
Hunki
Super Advisor

Re: Script to find any capital letter and change it to lower case?

Slightly modifying Aussan's script :

#!/bin/ksh
for file in `ls`
do
mv $file `echo $file |tr "[:lower:]" "[:upper:]"`
done