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