#!/usr/bin/perl -s use strict; our ($r); my %md5; my $com = "#l rm"; my $rm = "#s rm"; if ( $r ){ $com = "##" ; $rm = "rm" ; } my @dirs = @ARGV ; @dirs = (".") unless @dirs; for my $d(@dirs){ unless(-d $d ){ warn ("not a directory $d\n"); next;} open(F,"-|","find '$d' -type f -exec md5sum {} \+") or die; while(){ chomp; if(/(\w*)\s+(.*)/){ push(@{$md5{$1}},$2); } } close F; } my $tmp="/tmp/__$$"; open(F,">",$tmp); for(keys %md5){ my ($p,@a)=sort {length($b) >= length($a)} @{$md5{$_}}; if(@a){ print F "\n"; print F "$com '$p'\n"; for(@a){ print F "$rm '$_'\n" unless $_ eq $p } } } close F; unless(-z $tmp){ system ("vim $tmp"); system ("sh $tmp"); } unlink $tmp;