$ 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; } }