如何编写Perl脚本来计算目录中每个文件的MD5总和?

3 unix perl md5 md5sum

有什么方法可以编写Perl脚本来计算目录中每个文件的MD5sum?

如果是这样,我该怎么做?

Mat*_*zle 5

嗯,有很多方法可以做到这一点,但是它取决于您需要执行的两个操作。您首先需要找到要运行检查的文件列表,然后需要在每个文件上运行md5sum检查。有很多方法可以做到这一点,但是以下应该可以满足您的需求。

#!/usr/bin/perl

use strict;
use warnings;
use Digest::MD5 qw(md5_hex);

my $dirname = "/home/mgreen/testing/";
opendir( DIR, $dirname );
my @files = sort ( grep { !/^\.|\.\.}$/ } readdir(DIR) );
closedir(DIR);

print "@files\n";

foreach my $file (@files) {
    if ( -d $file || !-r $file ) { next; }
    open( my $FILE, $file );
    binmode($FILE);
    print Digest::MD5->new->addfile($FILE)->hexdigest, " $file\n";
    close($FILE);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码将获取目录中每个文件的md5sum,并跳过所有子目录,并将其打印到STDOUT。然后,由Digest :: MD5模块完成MD5校验和部分,这最终是我认为您要寻找的。

我很喜欢您的问题,因为它有很多可能的解决方案,例如“我如何在perl中做到这一点?”。问题,所以我相信您会找到很多可能的解决方案,并且我稍后回家时很可能会更新我的问题。