#!/usr/bin/perl -w use Digest::SHA3; use strict; my $home = $ARGV[0] // '.'; my %SIGN; verdup($home); sub verdup { my $dir = shift; $dir .= '/' if ($dir !~ /\/$/); print "DIR-> $dir\n"; opendir (my $dh, $dir) or warn "Cannot opendir $dir"; my @files = readdir ($dh); closedir ($dh); for my $i (@files){ next if ($i=~/^\.$/ || $i=~/^\.\.$/); my $real = $dir.$i; # print "$real\n"; if (-d $real) { # if ( chdir $real ){ verdup ($real); # }else{ warn "No hay privilegios y no se accede a $i" }; }elsif (-f $real) { # $sha3->addfile(*F); my $sha3 = Digest::SHA3->new(256); $sha3->addfile($real,'b'); my $digest = $sha3->digest; # compute digest # $digest = $sha3->hexdigest; # $digest = $sha3->b64digest; # $real =~ /\/(.*)$/; # my $base = $1; $SIGN{ $i.$digest }++; if ($SIGN{ $i.$digest } > 1 ){ print "$real is a real dupe type $i [D]elete/[O]mit/[Q]uit?\n"; my $r = ; if ($r =~ /d/i) { unlink $real; }elsif ($r =~ /q/i){ exit 1; }else{ # do nothing } }else{ # since the file is unique you must add its SIGN to a DB # for security purposes } }else{ # print "Not a file or a directory\n"; } } } __END__