#!/usr/bin/perl # rename smartspice files in "-000n.raw" order # this works! my @dir = glob("*-*.*"); my %fam ; # find longest number of digits in file name foreach ( @dir ) { if( /(^.*)-(\d+)\.(raw|out)$/i ) { my $s = length( $2 ) ; if( $fam{$1} < $s ) { $fam{$1} = $s ; } } } foreach my $k ( keys %fam ) { printf( "%15s %4d\n", $k, $fam{ $k } ); } # add leading zeros to shorter number part of file name, and rename it foreach ( @dir ) { if( /(.*)-(\d+)\.(raw|out)$/i ) { my $s = length( $2 ) ; if( $fam{ $1 } > $s ) { my $fstr = sprintf( "%%s-%%0%dd.%%s", $fam{$1} ); my $nstr = sprintf( $fstr, $1, $2, $3 ); print "rename ", $_, ", ", $nstr, "\n"; rename $_, $nstr ; } } }