当前位置: 首页 > news >正文

MD5 校验脚本

学习笔记:MD5 校验脚本


01. 代码一(针对符号链接处理)

#!/bin/bash
out="all_md5.txt"
> "$out"# 遍历当前目录下所有 D120_* 子目录
for dir in D120_*; doecho "📁 处理目录: $dir"# 遍历目录下的每个符号链接for link in "$dir"/*; doif [ -L "$link" ]; thentarget=$(readlink -f "$link")if [ -f "$target" ]; then# 计算 md5 并替换为相对路径输出md5=$(md5sum "$target" | awk '{print $1}')echo "$md5  ${link}" >> "$out"elif [ -d "$target" ]; then# 如果是目录,则递归计算其中所有文件的 MD5while IFS= read -r file; domd5=$(md5sum "$file" | awk '{print $1}')rel_path="${link}/$(basename "$file")"echo "$md5  $rel_path" >> "$out"done < <(find "$target" -type f)fifidoneecho "" >> "$out"
doneecho "✅ 所有目录的 MD5 已写入 $out"

02. 代码一解读

  1. 初始化输出文件

    out="all_md5.txt"
    > "$out"
    
    • 定义输出文件,清空内容。
  2. 遍历目录

    for dir in D120_*; do
    
    • 遍历当前目录下所有以 D120_ 开头的子目录。
  3. 遍历符号链接

    for link in "$dir"/*; doif [ -L "$link" ]; then
    
    • 判断目录下的每个文件是否是 符号链接
  4. 解析符号链接目标

    target=$(readlink -f "$link")
    
    • 获取符号链接指向的真实路径(绝对路径)。
  5. 处理文件和目录

    • 文件

      md5=$(md5sum "$target" | awk '{print $1}')
      echo "$md5  ${link}" >> "$out"
      
      • 计算 MD5,输出相对路径。
    • 目录

      while IFS= read -r file; domd5=$(md5sum "$file" | awk '{print $1}')rel_path="${link}/$(basename "$file")"echo "$md5  $rel_path" >> "$out"
      done < <(find "$target" -type f)
      
      • 使用 find 遍历目录下所有文件,计算 MD5,并输出相对路径。
  6. 输出完成提示

    echo "✅ 所有目录的 MD5 已写入 $out"
    

⚠️ 注意:< <(...) 是 Bash 的 process substitution,必须用 Bash 执行。


01. 代码二(直接递归所有目录)

#!/bin/bash
# 输出文件
out="md5_checksums.txt"
> "$out"# 遍历当前目录下所有子目录
for dir in */; doif [ -d "$dir" ]; thenecho "📁 正在处理目录: $dir"# 递归遍历目录下所有文件计算 MD5find "$dir" -type f -exec md5sum {} \; >> "$out"echo "" >> "$out"fi
doneecho "✅ 所有目录的 MD5 已写入 $out"

02. 代码二解读

  1. 初始化输出文件

    • 与代码一相同,清空内容。
  2. 遍历目录

    for dir in */; doif [ -d "$dir" ]; then
    
    • 遍历当前目录下所有子目录。
  3. 递归计算 MD5

    find "$dir" -type f -exec md5sum {} \; >> "$out"
    
    • find 找到目录下所有文件。
    • md5sum 计算 MD5,并输出完整路径。
  4. 完成提示

    • 同样打印提示信息,告诉用户 MD5 文件已经生成。

总结对比

特性代码一代码二
处理对象针对符号链接(文件或目录)普通目录下所有文件
输出路径相对路径(保持符号链接结构)默认 find 输出绝对或相对路径
复杂度高,处理目录和文件两种情况简单,直接递归
依赖Bash 执行(process substitution)可用 sh 或 bash

学习重点

  • 符号链接的 MD5 计算需要区分链接指向文件或目录。
  • 相对路径 vs 绝对路径输出对后续校验和比较很重要。
  • find ... -exec 是快速处理目录文件的好方法。
http://www.dtcms.com/a/606261.html

相关文章:

  • 重生归来,我要成功 Python 高手--day35 深度学习 Pytorch
  • 马云有没有学过做网站百度收录时间
  • 企业网站的规划与建设ppt建设一个打鱼游戏网站
  • 在 Linux Ubuntu 24.04 安装 IntelliJ IDEA
  • 自适应网站建设方案建设网站 请示 报告
  • 有哪些做网站的品牌ios开发app
  • C语言编译器电脑版 | 提供高效编译体验,轻松学习与开发
  • 容器访问某个链接中断后面又正常,socket
  • 构建现代应用的9个Python GUI库
  • 做网站业务的怎么寻找客户做网站公司哪家强
  • 【第1章>第6节】基于FPGA的图像膨胀处理算法的Verilog实现
  • 网站开发对企业的关键化妆品首页设计
  • 基于图的可解释性推荐综述
  • Nginx搭建RTMP点播流媒体服务器步骤详解,Nginx+RTMP+OBS推流搭建流媒体服务器
  • 东莞建设网站官网住房和城乡网站平台系统设计公司
  • 具身智能-一文详解视觉-语言-动作(VLA)大模型(2)
  • 如何使用 Docker 打包一个简单的应用程序:简易指南
  • Hyper-V Windows 11 Pro x64 开局问题
  • 长沙外贸建站土地 水利 勘测设计 公司宣传册设计样本
  • Cursor区域限制解决方法, Cursor 提示:“Model not available“的原因
  • 自签名证书需要手动确认风险导致nginx转发无效问题
  • 重庆市建设工程安全网站广告营销公司
  • 编译型语言有哪些 | 深入了解编译型语言的工作原理和特点
  • 实践教程|如何创建一个WhatsApp AI Chatbot
  • 网站流量分成专题制作 wordpress
  • 深度学习中适合长期租用的高性价比便宜的GPU云服务器有哪些?
  • 【DaisyUI】如何覆盖 dropdown 下拉效果?
  • 个人网站可以挂广告吗网站开发项目合同书
  • 网站建设前提企业信息管理
  • 每日两题day42