Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^4: REVISED - Transforming File Name Characters

by rfleisch (Initiate)
on Mar 14, 2013 at 19:24 UTC ( #1023539=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Transforming File Name Characters
in thread Transforming File Name Characters

Hello, This is my revised code. can anyone spot any blaring error??

#!/usr/local/ActivePerl-5.16/bin/perl use POSIX qw/strftime/; use strict; use warnings; use diagnostics; sub fixdir { my $dir = shift; opendir my $DH, $dir or die "Not Found....$dir: $!"; while (my $f = readdir $DH) { next if grep $_ eq $f, qw/. ../; (my $new = $f) =~ s/[^a-zA-Z0-9_.]/_/g; if (-e "$dir/$new") { fixdir("$dir/$new") if -d "$dir/$new"; next; } # next if ($new eq $f); while ( -e "$dir/$new") { $new.= "1"; } print STDERR "Renaming: $f -> $new\n"; rename "$dir/$f", "$dir/$new"; fixdir("$dir/$new") if -d "$dir/$new"; } } die "No command line arguments given!" unless @ARGV; my $nargs = @ARGV; print "Number of command line arguments is $nargs\n"; my $Do_Dir = $ARGV[0]; # print("ARG=", "$Do_Dir", "<<<<<<\n"); if (!$Do_Dir ) { print ("No Folder Name given!\n"); exit; } print( "The Folder Name is: ", "$Do_Dir", "\n" ); fixdir("$Do_Dir"); print "Done...\n"
Thank you one and all for your help on this little project1

Regards, -Ray


Comment on Re^4: REVISED - Transforming File Name Characters
Download Code
Re^5: REVISED - Transforming File Name Characters
by choroba (Abbot) on Mar 14, 2013 at 19:54 UTC
    If $dir/$new already exists, you do not rename it. That's not what I think you want. What about this:
    sub fixdir { my $dir = shift; opendir my $DH, $dir or die "Cannot open '$dir': $!"; while (my $f = readdir $DH) { next if grep $_ eq $f, qw/. ../; (my $new = $f) =~ s/[^a-zA-Z0-9_.]/_/g; if ($new ne $f) { $new .= '1' while -e "$dir/$new"; print STDERR "Renaming: $f -> $new\n"; rename "$dir/$f", "$dir/$new"; } fixdir("$dir/$new") if -d "$dir/$new"; } }
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
      And this is my FINAL results. I tested it on TWO LARGE folders and it worked great. And YES, I backed up first. :-)

      I thank you Sooooooooo Much

      -Regards -Ray
      #!/usr/bin/perl # use POSIX qw/strftime/; # use strict; # use warnings; # use diagnostics; sub fixdir { my $dir = shift; opendir my $DH, $dir or die "Not Found....$dir: $!"; while (my $f = readdir $DH) { next if grep $_ eq $f, qw/. ../; fixdir("$dir/$f") if -d "$dir/$f"; (my $new = $f) =~ s/[^a-zA-Z0-9_.]/_/g; if ($new eq $f) { next; } while ( -e "$dir/$new") { $new .= "1"; } print STDERR "Renaming: $f -> $new\n"; rename "$dir/$f", "$dir/$new"; } } die "No command line arguments given!" unless @ARGV; my $nargs = @ARGV; print "Number of command line arguments is $nargs\n"; my $Do_Dir = $ARGV[0]; # print("ARG=", "$Do_Dir", "<<<<<<\n"); if (!$Do_Dir ) { print ("No Folder Name given!\n"); exit; } print( "The Folder Name is: ", "$Do_Dir", "\n" ); fixdir("$Do_Dir"); print "Done...\n"

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1023539]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2014-09-22 09:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (186 votes), past polls