检查 md5sum 以识别 perl 中的重复文件
check for md5sum to identify duplicate files in perl
如何在 perl 中的 if 语句中使用 md5sum 检查重复文件?
我正在寻找执行此操作的代码行:
if { (md5 of new file matches any of the md5sum values of already parsed files)
print "duplicate found"
} else { new file and add md5sum to a list for check)
print "new file"
}
通常执行此操作的惯用方法是使用哈希。
use strict;
use warnings;
use 5.018;
my %seen;
for my $string (qw/ one two three four one five six four seven two one /) {
if ( $seen{$string} ) {
say "saw $string";
}
else {
$seen{$string}++;
say "new $string";
}
}
How is the hash used to find unique items 更详细。
如评论中所述,您将使用 Digest::MD5 之类的库来为文件生成 MD5 字符串。将两者联系在一起是 reader.
的一个练习
基本思想是为您遇到的每个文件计算哈希码。在伪代码中:
my %md5_to_file;
for every file
push @{ $md5_to_file{ md5 of file } }, file
然后,%md5_to_file
映射中基数 > 1 的任何值都指向可能的重复项。然后您可以做进一步检查以确定您是否有碰撞或真正的重复。
另见 DFW Perl Mongers ONLINE Hackathon Smackdown - Results, Awards, And Code 。
如何在 perl 中的 if 语句中使用 md5sum 检查重复文件?
我正在寻找执行此操作的代码行:
if { (md5 of new file matches any of the md5sum values of already parsed files)
print "duplicate found"
} else { new file and add md5sum to a list for check)
print "new file"
}
通常执行此操作的惯用方法是使用哈希。
use strict;
use warnings;
use 5.018;
my %seen;
for my $string (qw/ one two three four one five six four seven two one /) {
if ( $seen{$string} ) {
say "saw $string";
}
else {
$seen{$string}++;
say "new $string";
}
}
How is the hash used to find unique items 更详细。
如评论中所述,您将使用 Digest::MD5 之类的库来为文件生成 MD5 字符串。将两者联系在一起是 reader.
的一个练习基本思想是为您遇到的每个文件计算哈希码。在伪代码中:
my %md5_to_file;
for every file
push @{ $md5_to_file{ md5 of file } }, file
然后,%md5_to_file
映射中基数 > 1 的任何值都指向可能的重复项。然后您可以做进一步检查以确定您是否有碰撞或真正的重复。
另见 DFW Perl Mongers ONLINE Hackathon Smackdown - Results, Awards, And Code 。