【发布时间】:2014-08-26 21:42:52
【问题描述】:
我正在尝试使用 Mac OS 来实现这一点,尝试通过使用 fdupes 来实现类似但没有奏效。这是我想要实现的目标:
- “alpha”目录中有 100 个文件
- 选择一个文件 A 并将其与目录 'alpha' 中剩余的每个文件进行比较
- 如果文件 A 的内容与任何文件匹配(重复),则删除重复文件
- 移至文件 B,并与剩余文件进行比较,然后执行相同操作(检查是否重复)
- 重复相同的操作,直到检查所有文件的重复项。其余文件应该是唯一的
更新
我修改了一些类似于我在这里找到的东西,但我必须多次运行它才能取出重复项。它不会在一次运行中检测到重复项(必须多次运行才能检测到重复项)。不确定它是否正常工作
use Digest::MD5;
%check = ();
while (<*>) {
-d and next;
$fname = "$_";
print "checking .. $fname\n";
$md5 = getmd5($fname) . "\n";
if ( !defined( $check{$md5} ) ) {
$check{$md5} = "$fname";
}
else {
print "Found duplicate files: $fname and $check{$md5}\n";
print "Deleting duplicate $check{$md5}\n";
unlink $check{$md5};
}
}
sub getmd5 {
my $file = "$_";
open( FH, "<", $file ) or die "Cannot open file: $!\n";
binmode(FH);
my $md5 = Digest::MD5->new;
$md5->addfile(FH);
close(FH);
return $md5->hexdigest;
}
【问题讨论】: