Aprendiendo Perl, el reto: Encontrar duplicados
Javier Tiá
javier.tia en gmail.com
Mar Abr 3 17:17:19 PDT 2012
Hola:
Yo me sumo y agrego otra solución.
Es recursivo y debes siempre pasarle el camino donde quieres buscar
los archivos duplicados.
------------------------------ 8< ------------------------------
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find;
use File::Basename;
use Digest::MD5;
($#ARGV == 0) or die "Usage: " . basename($0) . " <directory>\n";
my %hashes = ();
find \&wanted, @ARGV;
sub get_hash($)
{
open(FILE, $_);
return Digest::MD5->new->addfile(*FILE)->hexdigest;
}
sub wanted
{
$hashes{$File::Find::name} = get_hash($_) if -f $_;
}
for my $path (sort { $hashes{$a} cmp $hashes{$b} } keys %hashes)
{
print "$path\n"
if ((grep {/$hashes{$path}/} values %hashes) > 1);
}
------------------------------ >8 ------------------------------
P.D: Mi post en http://www.learning-perl.com/?p=286 está en espera de
aprobación.
--
Javier Tiá
Más información sobre la lista de distribución Costarica-pm