Compare commits

..

No commits in common. "e4c489ce8fa76c385b4426be393a7cb8dbff07ff" and "bd7393310542e1de4b59f21259b4bd8d68424058" have entirely different histories.

2 changed files with 23 additions and 20 deletions

29
finddup Executable file → Normal file
View File

@ -6,7 +6,7 @@ finddup - yet another tool for finding duplicates
=cut
use v5.20;
use v5.10;
no autovivification 'fetch';
use File::Find;
use File::stat;
@ -25,17 +25,17 @@ find(sub {
unless ($files->{$size}{$hash}) {
$files->{$size}{$hash} = [];
}
push $files->{$size}{$hash}->@*, { path => $File::Find::name,
size => $size,
dev => $st->dev,
ino => $st->ino,
};
push $files->{$size}{$hash}, { path => $File::Find::name,
size => $size,
dev => $st->dev,
ino => $st->ino,
};
}
},
$dir
},
$filesdir
);
for my $size (keys $files->%*) {
for my $size (keys $files) {
if (@{ $files->{$size}{""} } == 1) {
next;
}
@ -46,14 +46,16 @@ for my $size (keys $files->%*) {
unless ($files->{$size}{$hash}) {
$files->{$size}{$hash} = [];
}
push $files->{$size}{$hash}->@*, $file;
push $files->{$size}{$hash}, $file;
}
delete $files->{$size}{""};
}
for my $hash (keys $files->{$size}->%*) {
for my $hash (keys $files->{$size}) {
if (@{ $files->{$size}{$hash} } > 1) {
while (my ($i, $file) = each @{ $files->{$size}{$hash} }) {
say "$i: $file->{path}";
for my $file (@{ $files->{$size}{$hash} }) {
unless ($st->dev == $file->{dev} && $st->ino == $file->{ino}) {
say "$file->{path}";
}
}
say "";
}
@ -62,3 +64,4 @@ for my $size (keys $files->%*) {
# vim: tw=132 sw=4 expandtab

View File

@ -6,7 +6,7 @@ finddup - yet another tool for finding duplicates
=cut
use v5.20;
use v5.10;
no autovivification 'fetch';
use File::Find;
use File::stat;
@ -25,11 +25,11 @@ find(sub {
unless ($haystack->{$size}{$hash}) {
$haystack->{$size}{$hash} = [];
}
push $haystack->{$size}{$hash}->@*, { path => $File::Find::name,
size => $size,
dev => $st->dev,
ino => $st->ino,
};
push $haystack->{$size}{$hash}, { path => $File::Find::name,
size => $size,
dev => $st->dev,
ino => $st->ino,
};
}
},
$haystackdir
@ -50,7 +50,7 @@ find(
unless ($haystack->{$size}{$hash}) {
$haystack->{$size}{$hash} = [];
}
push $haystack->{$size}{$hash}->@*, $file;
push $haystack->{$size}{$hash}, $file;
}
delete $haystack->{$size}{""};
}