You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用find命令递归生成MD5校验值并输出含文件大小的结果文件

解决方案:用find结合bash脚本获取MD5、路径和格式化文件大小

没问题,我来帮你搞定这个需求!你需要在现有find+md5sum的基础上,补充文件大小的计算并按要求格式化输出,下面是两种兼顾正确性和效率的方案:

方案1:单文件处理(适合少量文件)

这个写法直观易懂,每个文件单独启动bash进程处理:

find /home/kat/sam -type f -exec bash -c '
    # 提取当前文件的纯MD5值
    md5_hash=$(md5sum "$1" | cut -d" " -f1)
    # 获取文件的字节大小
    byte_size=$(stat -c "%s" "$1")
    # 字节转KB(向上取整,避免1025字节显示为1kb)
    kb_size=$(( (byte_size + 1023) / 1024 ))
    # 按要求格式拼接输出
    echo "$md5_hash $1 ${kb_size}kb"
' _ {} \; > /home/kat/tempmd5new.txt

方案2:批量处理(适合大量文件,效率更高)

如果你的目标目录下有很多文件,方案1会频繁启动bash进程,效率偏低。这个版本用-exec ... +让bash一次处理多个文件,大幅减少进程开销:

find /home/kat/sam -type f -exec bash -c '
    # 循环处理所有传入的文件
    for target_file do
        md5_hash=$(md5sum "$target_file" | cut -d" " -f1)
        byte_size=$(stat -c "%s" "$target_file")
        kb_size=$(( (byte_size + 1023) / 1024 ))
        echo "$md5_hash $target_file ${kb_size}kb"
    done
' _ {} + > /home/kat/tempmd5new.txt

关键细节说明

  • stat -c "%s":这是Linux系统下获取文件字节数的标准写法,如果是macOS环境,需要改成stat -f "%z"。
  • 字节转KB的计算逻辑:(( (byte_size + 1023) / 1024 ))是为了实现向上取整,比如1025字节会被计算为2kb,更符合日常文件大小的显示习惯。
  • 提取MD5值的逻辑:md5sum "$file" | cut -d" " -f1是从md5sum的默认输出(「MD5值 文件路径」)中剥离出纯哈希值。

运行后你会得到完全符合要求的输出,示例如下:

662c1e24227048e50ae8e9c62b8a60da yolo/happy/README.txt 20kb

内容的提问来源于stack exchange,提问作者karkator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:52:38