Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Optimize file renaming.

by Tanktalus (Canon)
on May 26, 2005 at 17:21 UTC ( [id://460769]=note: print w/replies, xml ) Need Help??


in reply to Optimize file renaming.

What I use on Unix:

$ cat renum #! /usr/bin/perl -w use strict; my $len = 0; if ($ARGV[0] =~ /^\d+$/) { $len = shift; } elsif ($ARGV[$#ARGV] =~ /^\d+$/) { $len = pop; } else { foreach my $f (@ARGV) { $f =~ /(\d+)(\D*)$/; $len = length $1 if length $1 > $len; } } unless ($len) { print "No length given/discovered\n"; exit 1; } foreach my $f (@ARGV) { (my $newf = $f) =~ s/(\d+)(\D*)$/sprintf "%0${len}d%s", $1, $2/e; if ($newf ne $f) { print "$f -> $newf\n"; rename $f, $newf; } }
However, if you want this to work cleanly on Windows, too, I'd just add a line near the top like this: @ARGV = map { glob $_ } @ARGV) and then you could run this as perl renum e:/perl/comics/*.png - it would figure out that the largest number is 3 digits long, and renam all of them to be 3 digits long. Slightly more generic.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2025-05-23 20:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.