#! /usr/local/bin/perl $Usage = <) { next if (/\/\./); next if (/\/XX\.delete\-me\./); s/[ \t\r\n]*$//; # print "I>$_\n"; $s = ( -s $_ ); $m = ( -M $_ ) * 24; $Fs{$s} .= "$m\t$_\r"; } close(I); } } while(($size,$fns) = each(%Fs)) { $fns =~ s/[ \t\r\n]*$//; local(@t) = sort { $a <=> $b; } split(/\r+/,$fns); next if($#t < 1); local(%sz); undef %sz; local(@fn); undef @fn; foreach $a ( @t ) { $a =~ /\t+/; $sz{$'} = $`; push(@fn, $'); } print stderr "## These files are same filesize:\n " . join(" (newer)\n ",@fn) . "\n"; @rms = &disp_images(@fn); &remove_files(@rms); ISCONT: print stderr '## Continue?'; $aaa = &read_ans('Y', 'q', ); if($aaa eq 'q') { last; } if($aaa eq 'Y') { next; } goto ISCONT; } system("sleep 1; /bin/rm -r $TMPDR"); print stderr "Done.\n"; exit; sub read_ans { local(@as) = @_; local($ans); print stderr "[" . join("/", @as) . "]: "; $ans = ; $ans =~ y/A-Z/a-z/; foreach $ia ( 0 .. $#as ) { local($a) = $as[$ia]; $a =~ s/^(.).*$/\1/; $a =~ y/A-Z/a-z/; if($ans =~ /$a/) { return $as[$ia]; } } return $as[0]; } sub remove_files { local(@fs) = @_; foreach $f ( @fs ) { $f =~ /\/[^\/]*$/; local($fd,$ff) = ( $`, $&, ); $ff =~ s/^\/+//; local($fn) = "${fd}/XX.delete-me.$ff"; local($com) = "mv $f $fn"; print stderr "[Ex:Remove] $com\n"; system($com); } return; } sub disp_images { local(@fs) = @_; print stderr "## Please check the images. I\'m waiting for you.."; $nm++; local(%Xot, %Xto, @ret, $f,$fn,$xv); $TMPD = "$TMPDR/temp$nm"; mkdir $TMPD,0777; foreach $fn ( 0 .. $#fs ) { $f = $fs[$fn]; local($tf) = $f; $tf =~ s/^.*\/([^\/]+)$/\1/; if($#fs != $fn) { $tf = 'Remove.' . $tf; } while(-f "$TMPD/$tf") { $tf .= 'Z'; } $Xot{$f} = $tf; $Xto{$tf} = $f; system("cp $f $TMPD/$tf"); } $xv = 'xv -vsmap -vsgeometry 420x630-0+5 -geometry +0+0'; system("cd $TMPD ; $xv"); foreach $f ( keys %Xto ) { if(! -f "$TMPD/$f") { push(@ret, $Xto{$f}); } } system("/bin/rm -r $TMPD"); print stderr "\n"; return @ret; }