#!/usr/sbin/perl use strict; # # lfrms - list frame ranges # 1.00 01/12/98 erco@3dsite.com # $| = 1; # MAIN { my $dir; my @curdir = ( "." ); my @dirs = ( $#ARGV == -1 ) ? @curdir : @ARGV; foreach $dir ( @dirs ) { if ( $#dirs > 0 ) { print "$dir:\n"; } my @list = split(/\n/, `ls $dir`); my @last = ""; my $start; my $pending = 0; foreach ( @list ) { if ( /(.*)\.([0-9]*)\.(.*)/ ) { # NO MATCH ON LAST NAME? SKIP if ( $1 ne $last[0] || $3 ne $last[2] || ($2-$last[1]) != 1 ) { # END LAST RANGE if ( $last[0] ne "" && $last[2] ne "" ) { if ( $start == $last[1] ) # JUST ONE FRAME? PRINT IT { printf("%s.%s\n", $start, $last[2]); } else # RANGE? PRINT AS RANGE { printf("[%s-%s].%s\n", $start, $last[1], $last[2]); } } # START NEW RANGE printf("%s.", $1); $start = $2; $pending = 1; } # SAVE FOR NEXT ITER $last[0] = $1; $last[1] = $2; $last[2] = $3; } } if ( $pending ) { if ( $start == $last[1] ) # JUST ONE FRAME? PRINT IT { printf("%s.%s\n", $start, $last[2]); } else # RANGE? PRINT AS RANGE { printf("[%s-%s].%s\n", $start, $last[1], $last[2]); } } } }