#!/usr/bin/perl #20070702 - added match for ' to handle ' in files # #use Carp ; #use strict; #use warnings; #use English qw( -no_match_vars ) ; sub srename { local @list={}; local $file; local $newfile; my $pos = shift; chdir $pos ; #@list = split('\n' , `ls -D -1`); opendir (DIRE,".") or die ( "Unable to open $pos"); @list = readdir (DIRE) or die ( "Unable to read $pos"); closedir DIRE or die ( "Unable to close $pos");; local $file ; foreach $file ( @list ) { if ( ( $file eq '.') ||( $file eq '..')) { next;} #print "echo Found $file\n"; local $newfile=$file; $newfile=~tr/\/\.A-Za-z0-9_-/_/cs ; $newfile=~tr/'/_/s ; $file=~ s/\'/\\\'/g ; $file=~ s/\&/\\\&/g ; $file=~ s/ /\\ /g ; $file=~ s/\(/\\\(/g ; $file=~ s/\)/\\\)/g ; # ($dev,$ino,$mode, $nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksiz,$blocks)= stat($file); #print " $file is $mode\n"; if ( $newfile ne $file ) { `mv $file $newfile`; print "mv $file $newfile\n"; } if ( -d $newfile ) { print "cd $newfile\n"; srename( $newfile) ; } } # end foreach print "cd ..\n"; chdir '..'; } # end sub srename ('.');