lua遍历指定文件夹下所有文件并打印每个文件的md5哈希值

该文章介绍了如何在Lua中使用纯Lua实现的md5.lua模块进行文件的MD5哈希计算,以及结合luafilesystem模块遍历Linux文件系统。通过示例代码展示了如何创建一个函数来获取文件的MD5校验和,以及递归遍历目录并打印所有非隐藏文件的MD5值。提供的代码经过验证,与系统命令行工具计算的结果一致。
摘要由CSDN通过智能技术生成

依赖模块

md5模块

下载地址:
https://github.com/kikito/md5.lua/blob/master/md5.lua
这个模块是纯粹lua实现的md5算法,运算md5的速度有点慢。

luafilesystem模块

下载地址:
https://github.com/lunarmodules/luafilesystem
这个模块实现了在lua中访问linux文件系统的功能,可以通过此模块递归遍历每一个子文件夹下的文件。

源码实现

md5 = require "md5"
lfs = require "lfs"

md5file = {}

md5file.__index = md5file

function md5file:new(path)
    local object = {path = path, md5obj = md5:new()}
    setmetatable(object, self)
    return object
end

function md5file:get_md5sum()

    local file=assert(io.open(self.path, "rb"))

    local len = assert(file:seek("end"))
    assert(file:seek("set"))

    local read_len = 8192
    for i=0,len,read_len do
        local readbuf=file:read(read_len)
        if readbuf == '' or readbuf == nil then
            break
        end
        self.md5obj:update(readbuf)
    end

    file:close()

    return self.md5obj:finish()
end

function md5dir(path)
    for file in lfs.dir(path) do
        if file ~= "." and file ~= ".." then
            local f = path.. '/' ..file
            local attr = lfs.attributes (f)
            if attr.mode == "directory" then
                md5dir(f)
            else
                print(f, md5.tohex(md5file:new(f):get_md5sum()))
            end
        end
    end
end

md5dir(".") --test files in current folder

运行如图

在这里插入图片描述
经验证,与系统命令行运算的结果一致。
在这里插入图片描述

源码下载:
[https://download.csdn.net/download/wjg220000/87690034]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

化妖成魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值