我如何编写 Perl 脚本来计算目录中每个文件的 MD5 和? [关闭]

2024-04-21

有没有办法编写Perl脚本来计算目录中每个文件的MD5sum?

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


有很多方法可以做到这一点,但归结为您需要执行的两个操作。您首先需要找到要运行检查的文件列表,然后需要对每个文件运行 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);
}

上面的代码将获取目录中每个文件的 md5sum 并跳过任何子目录并将其打印到 STDOUT。 MD5校验和部分然后由摘要::MD5 http://perldoc.perl.org/Digest/MD5.html我认为您最终正在寻找的模块。

我确实喜欢你的问题,因为它是开放式的,有很多可能的解决方案,比如“我如何在 perl 中做到这一点?”问题,所以我相信您会得到很多可能的解决方案,我很可能会在稍后回家时更新我的​​解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何编写 Perl 脚本来计算目录中每个文件的 MD5 和? [关闭] 的相关文章

  • 为什么子程序需要在声明其中使用的变量之后编写?

    假设我们有这段代码 为什么它会因显式包名称错误而失败 因为该函数仅在声明后才被调用 value use strict use warnings sub print value print n value my value 2 print v
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • Perl 中可以使用哪种语法糖来减少左/右值运算符与 if 语句的代码?

    那里有很多语句 因为 Perl 是一种非常甜蜜的语言 但任何语言中最常用的语句都是 if 语句和设置值的组合 我想我已经找到了很多 但仍然存在一些空白 最终 目标是不必多次编写变量名 这是我到目前为止所拥有的 r s r s unless
  • Perl YAML 模块无法识别标量类型

    我加载以下 yaml 文件 foo bar s 1 hx 0x34 用这段代码 use YAML qw LoadFile Dump use Data Dumper my d LoadFile test yaml print Dumper d
  • 如何测试两个大视频是否相同?

    我有一个系统 其中会摄取视频文件 然后启动多个 CPU 密集型任务 由于这些任务的计算成本很高 如果文件已经被处理过 我想跳过处理该文件 视频来自各种来源 因此文件名等不是可行的选择 如果我使用图片 我会比较 MD5 哈希值 但对于 5GB
  • Bugzilla 中分离客户端的基本权限

    我正在尝试配置一个 Bugzilla 实例 这将允许我的客户登录并为其正在开发 维护的网站提交错误 例如 我创建了 2 个名为 TestProject TestProject2 的产品和一个名为 TestClient 的用户 我想要实现的是
  • perl-5.10 之前的高效版本相当于 pack("Q>")

    更新 萨尔瓦正确地指出我对 Q 包模板的介绍是错误的 这是 gt 修饰符 不会返回到 5 8 Perl 5 10 引入了 pack 修饰符 gt 对于我使用 Q 的用例 它将一个无符号四边形 64 位 值打包在大尾数法 现在 我正在寻找一个
  • grep 通过彩色文本,例如海湾合作委员会 |颜色gcc | grep 正则表达式

    在 grep 管道输出时 如何使 grep 尊重 ANSI 颜色转义 我很高兴使用其他东西 perl 而不是 grep 我的用户案例 我想要 gcc foobar c colorgcc grep regexp ls color grep f
  • 打包 Perl 应用程序,以便它可以在 Perl 的默认前缀之外工作

    我正在使用 Module Build 尽管我在构建环境上很灵活 来打包我正在编写的一些 Perl 软件 供我工作的内部使用 它包括一些脚本和一些辅助模块 我的计划是这样你就可以指定任何你想要的前缀 即perl默认值之外的东西 INC 在构建
  • 在 bash 脚本中检测鼠标点击

    我想知道如何在后台运行 bash 脚本 每当用户单击鼠标时该脚本都会执行某些操作 即运行脚本或命令或其他任何内容 即使终端关闭 我也希望它继续运行 有任何想法吗 谢谢 如果您使用的是X11 您可以尝试xdotool捕获鼠标事件 它会是这样的
  • 在 Google 表格应用程序中进行身份验证

    我有一个类似批处理的应用程序 由调度程序定期调用 无需人类用户参与 它使用 PerlNet Google 电子表格 http metacpan org pod Net Google Spreadsheets包通过从数据库获取的数据来更新 G
  • 如何捕获 X 错误?

    我尝试在网上搜索 但我必须注意 找到有关 X 编程这方面的材料并不容易 我使用 X 和 GLX 来创建 OpenGL 上下文 我已经知道我当前的显卡驱动程序仅支持 OpenGL API 版本 3 3 但我希望我的应用程序能够尝试创建任何类型
  • 如何使用 UNIX shell 脚本删除平面文件的页眉和页脚记录?

    我有一个平面文件 如下所示 如何使用 UNIX shell 脚本从文件中删除页眉和页脚并重写同一文件 9 20050427 HEADER RECORD 0000000 00000 000000000 123456 00 654321 DAT
  • 在 macOS 上使用 find 时出现“非法选项”错误

    我试图列出末尾仅带有字母 R 的文件 我用了find在 macOS 终端中如下所示 find type f name R 但我收到消息说illegal option t 第一个参数find是它应该开始寻找的路径 路径 表示当前目录 find
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 将字符串与 perl 中的模式对齐?

    我在方括号内有一些字符串块 如下所示 p1 text1 label1 p2 text2 label2 p3 text3 label3 等等 每个块里面有什么并不重要 但有时会有一些没有用方括号括起来的零散文本块 例如 p1 text1 la
  • 检查 Perl 函数参数值得吗?

    有很多关于MooseX 方法 签名 http search cpan org perldoc MooseX Method Signatures甚至在此之前 诸如参数 验证 http search cpan org perldoc Param
  • 来源和出口有什么区别?

    我正在编写一个 shell 脚本 以读取具有 key value 对的文件并将这些变量设置为环境变量 但我有疑问 如果我这样做source file txt是否会将该文件中定义的变量设置为环境变量 或者我应该逐行读取文件并使用导出命令设置它
  • 仅当我在 Windows 上时,如何有条件地使用 Perl 模块?

    以下 Perl 代码 if O eq MSWin32 use Win32 do windows specific stuff 在Windows下工作 但无法在所有其他平台下运行 无法在 INC中找到Win32 pm 如何指示 Perl 仅在
  • 如何找到进程启动时使用的原始用户名?

    有一个 perl 脚本需要以 root 身份运行 但我们必须确保运行该脚本的用户最初没有以用户 foo 身份登录 因为它将在脚本运行期间被删除 那么 我如何查明自登录以来可能已多次起诉的用户是否在该链中的任何时间都没有模拟过 foo 我发现

随机推荐