Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^5: REVISED - Transforming File Name Characters

by choroba (Canon)
on Mar 14, 2013 at 19:54 UTC ( #1023545=note: print w/ replies, xml ) Need Help??


in reply to Re^4: REVISED - Transforming File Name Characters
in thread Transforming File Name Characters

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"; } }
لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ


Comment on Re^5: REVISED - Transforming File Name Characters
Download Code
Re^6: FINAL - Transforming File Name Characters
by rfleisch (Initiate) on Mar 15, 2013 at 15:18 UTC
    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://1023545]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2015-07-03 16:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (54 votes), past polls