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