『Linux学习笔记』linux系统有哪些方法计算文件的md5!

linux系统有哪些方法计算文件的md5!

文章目录

  • 一. linux系统有哪些方法计算文件的md5!
      • 1. 使用 `md5sum` 命令(推荐)
        • 示例:
        • 输出:
        • 使用方法:
      • 2. 使用 `openssl` 命令
        • 计算MD5值:
        • 输出:
        • 使用方法:
      • 3. 使用 `shasum` 命令
        • 计算MD5值:
        • 输出:
        • 使用方法:
      • 4. 使用 `file` 命令配合 `md5sum`
      • 总结:
  • 二. 上面哪种方法速度最快
      • 1. **`md5sum`**
        • 速度特点:
      • 2. **`openssl`**
        • 速度特点:
      • 3. **`shasum`**
        • 速度特点:
      • 4. **`file` 配合 `md5sum`**
      • 综合对比(看这里):
      • 结论:
  • 三. 使用md5sum计算一个目录以及子目录下所有文件的md5值,输出结果保存到一个文件中。
      • 1. 具体步骤:
      • 2. 命令示例:
      • 3. 说明:
      • 4. 示例输出:
      • 5. 如果需要包含目录本身的MD5值:
  • 四. 每次执行的时候只需要`输入文件夹`以及`输出文件`
      • 修改后的脚本:
      • 脚本说明:
      • 使用步骤:
      • 示例:
        • 示例 1:指定输出文件名
        • 示例 2:使用默认输出文件名
      • 输出示例:

一. linux系统有哪些方法计算文件的md5!

在Linux系统中,计算文件的MD5值通常使用一些命令行工具。最常见的工具有 md5sumopensslshasum。以下是详细的介绍和示例:

1. 使用 md5sum 命令(推荐)

md5sum 是Linux中最常用的计算文件MD5值的命令。它会读取文件的内容,并计算出MD5哈希值。这个命令适用于计算大多数文件类型的MD5值。

示例:
md5sum filename
输出:
d41d8cd98f00b204e9800998ecf8427e  filename
  • d41d8cd98f00b204e9800998ecf8427e 是该文件的MD5哈希值。
  • filename 是文件的名称。
使用方法:
  • md5sum 支持管道输入,可以通过管道计算内容的MD5,例如:
    echo "hello world" | md5sum
    
    输出:
    b94d27b9934d3e08a52e52d7da7dabfa  -
    

2. 使用 openssl 命令

openssl 是一个功能强大的工具,除了可以用于SSL/TLS通信,还可以用于计算文件的MD5、SHA-1、SHA-256等哈希值。

计算MD5值:
openssl dgst -md5 filename
输出:
MD5(filename)= d41d8cd98f00b204e9800998ecf8427e
使用方法:
  • 如果你需要计算某个文件的MD5,可以使用上面的命令。
  • 你也可以计算其他哈希算法的值,例如SHA-256:
    openssl dgst -sha256 filename
    

3. 使用 shasum 命令

shasum 是一个常见的命令行工具,用于计算文件的SHA-1、SHA-256等哈希值。它也可以用来计算MD5哈希值,虽然它主要是针对SHA系列的。

计算MD5值:
shasum -a 1 filename
输出:
d41d8cd98f00b204e9800998ecf8427e  filename
使用方法:
  • shasum 支持指定哈希算法的参数,例如-a 256 用于计算SHA-256:
    shasum -a 256 filename
    

4. 使用 file 命令配合 md5sum

file 命令可以用于识别文件类型,但它本身并不计算MD5值。然而,你可以结合 filemd5sum 来先检查文件类型,然后计算MD5值。

file filename
md5sum filename

总结:

  • md5sum 是最常见的计算MD5值的命令,适用于大多数Linux系统。
  • openssl 是功能全面的工具,支持更多的哈希算法,并且可以用于SSL/TLS加密等任务。
  • shasum 主要用于SHA系列算法,但也支持计算MD5。

根据实际需求,可以选择适合的工具来计算文件的MD5值。

二. 上面哪种方法速度最快

在Linux中计算文件的MD5值时,速度的差异主要取决于工具本身的实现以及文件的大小。一般来说,常见的计算MD5值的工具如 md5sumopensslshasum 的速度差异并不是非常大,因为它们都采用类似的底层实现,但根据工具的实现细节和文件的处理方式,仍然会有一些区别。

1. md5sum

md5sum 是专门用于计算MD5哈希值的工具,它的速度通常是最快的,特别是当计算大文件时。因为它专门为计算MD5哈希设计,内部优化较好。

速度特点:
  • 专为MD5设计,因此计算过程简单高效。
  • 速度通常较快,尤其是在大文件计算时。
  • 适合批量计算和大文件的MD5值。

2. openssl

openssl 是一个功能非常强大的工具,虽然它支持多种哈希算法(包括MD5),但它的计算速度通常比 md5sum 稍慢。原因是 openssl 除了计算哈希之外,还包含了许多其他的加密功能,因此它的实现可能稍微复杂一些。

速度特点:
  • 虽然支持MD5,但它的计算速度通常不如 md5sum
  • 如果计算的是MD5,性能差距不大,但对于其他更复杂的加密算法(如SHA-256等),openssl 可能比专门的工具稍慢。

3. shasum

shasum 主要用于计算SHA系列的哈希值,但它也支持计算MD5。由于它的实现不是专门针对MD5,因此它的速度通常比 md5sum 稍慢。

速度特点:
  • 主要用于SHA系列哈希的计算,所以其处理MD5的效率较低。
  • 相对较慢,特别是在计算大文件时。

4. file 配合 md5sum

file 命令本身不会计算MD5哈希值,它用于识别文件类型,因此它并不直接影响MD5计算速度。如果你仅关注计算MD5,file 并不是一个必要步骤。

综合对比(看这里):

  • 最快md5sum —— 这是计算MD5值的最优化工具,速度通常最快,尤其是在文件较大时。
  • 次之openssl —— 计算MD5时稍慢于 md5sum,但差距通常不大,适合同时进行其他加密操作。
  • 最慢shasum —— 由于它更多用于计算SHA系列哈希值,计算MD5时稍微慢一些。

结论:

如果你的目标是单纯地计算MD5值并且追求速度,md5sum 是最快且最高效的工具。对于更复杂的加密需求或需要其他哈希算法时,openssl 也很有用,但它的MD5计算速度相对较慢。

三. 使用md5sum计算一个目录以及子目录下所有文件的md5值,输出结果保存到一个文件中。

要使用 md5sum 计算一个目录及其所有子目录下所有文件的 MD5 值,并将输出结果保存到一个文件中,可以使用 find 命令结合 md5sum 来实现。find 用于递归查找目录中的所有文件,md5sum 用于计算每个文件的 MD5 值。

1. 具体步骤:

  1. 使用 find 命令查找目录及子目录中的所有文件。
  2. 使用 md5sum 计算每个文件的 MD5 值。
  3. 将计算结果输出并保存到指定的文件中。

2. 命令示例:

假设你想计算 /path/to/directory 目录及其子目录下所有文件的 MD5 值,并将结果保存到 md5sums.txt 文件中,命令如下:

find /path/to/directory -type f -exec md5sum {} \; > md5sums.txt

3. 说明:

  • find /path/to/directory:指定要查找的目录路径。
  • -type f:仅查找文件(不包括目录)。
  • -exec md5sum {} \;:对每个文件执行 md5sum 命令,{}find 命令查找到的每个文件的占位符。
  • > md5sums.txt:将所有输出结果重定向到 md5sums.txt 文件中。

4. 示例输出:

输出的 md5sums.txt 文件将包含每个文件的 MD5 值和文件路径,例如:

d41d8cd98f00b204e9800998ecf8427e  /path/to/directory/file1.txt
9a0364b9e99bb480dd25e1f0284c8555  /path/to/directory/subdir/file2.txt
f8e5f90f64e1cf87f9030b4301d74e4c  /path/to/directory/subdir/file3.txt

5. 如果需要包含目录本身的MD5值:

如果你希望也计算目录本身的MD5(即将每个目录视为一个“文件”),可以通过给 find 添加一些选项来处理目录。

不过通常,目录的 MD5 值没有实际意义,因为它只是文件名和结构的集合。如果要计算目录内容的 MD5,依然可以通过对目录下所有文件的 MD5 值进行哈希计算来实现。

四. 每次执行的时候只需要输入文件夹以及输出文件

好的,我会根据你的要求修改脚本,使得用户可以选择输入输出文件名。如果用户没有提供输出文件名,则默认使用 md5sums.txt 作为输出文件名。

修改后的脚本:

#!/bin/bash# 检查是否输入了目录名
if [ -z "$1" ]; thenecho "请提供目录路径"exit 1
fi# 获取输入的目录路径
DIR="$1"# 检查目录是否存在
if [ ! -d "$DIR" ]; thenecho "目录 '$DIR' 不存在,请检查路径"exit 1
fi# 获取输出文件名,如果未提供则默认使用 md5sums.txt
OUTPUT_FILE="${2:-md5sums.txt}"# 计算目录下所有文件的 MD5 值并保存到输出文件
find "$DIR" -type f -exec md5sum {} \; > "$OUTPUT_FILE"# 提示用户操作完成
echo "MD5 值计算完成,结果已保存到 '$OUTPUT_FILE'"

脚本说明:

  • if [ -z "$1" ]; then:检查是否提供了目录路径。如果没有提供,脚本会提示并退出。
  • DIR="$1":将第一个参数(目录路径)赋值给 DIR 变量。
  • if [ ! -d "$DIR" ]; then:检查目录是否存在,如果目录不存在,提示错误并退出。
  • OUTPUT_FILE="${2:-md5sums.txt}":如果用户提供了第二个参数(输出文件名),则使用该文件名,否则使用默认值 md5sums.txt
  • find "$DIR" -type f -exec md5sum {} \; > "$OUTPUT_FILE":计算目录下所有文件的 MD5 值,并将结果保存到指定的输出文件中。

使用步骤:

  1. 创建脚本文件:

    将上述内容保存为 calculate_md5.sh 文件。

  2. 使脚本可执行:

    在终端中输入以下命令使脚本可执行:

    chmod +x calculate_md5.sh
    
  3. 运行脚本:

    • 如果需要指定输出文件名,运行:

      ./calculate_md5.sh /path/to/directory outputfile.txt
      

      这会将 MD5 值保存到 outputfile.txt 文件中。

    • 如果不指定输出文件名,脚本会默认使用 md5sums.txt 作为输出文件名:

      ./calculate_md5.sh /path/to/directory
      

示例:

示例 1:指定输出文件名

假设你运行以下命令:

./calculate_md5.sh /home/user/myfolder my_md5_results.txt

结果会保存在 my_md5_results.txt 文件中。

示例 2:使用默认输出文件名

假设你运行以下命令:

./calculate_md5.sh /home/user/myfolder

结果会保存在默认的 md5sums.txt 文件中。

输出示例:

无论你是否指定输出文件名,输出文件会包含每个文件的 MD5 值和路径,例如:

d41d8cd98f00b204e9800998ecf8427e  /home/user/myfolder/file1.txt
9a0364b9e99bb480dd25e1f0284c8555  /home/user/myfolder/subdir/file2.txt
f8e5f90f64e1cf87f9030b4301d74e4c  /home/user/myfolder/subdir/file3.txt

这样,用户每次执行脚本时只需输入目录路径,且可以选择是否指定输出文件名,提供了更大的灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/480500.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitlab自动打包python项目

现在新版的gitlab可以不用自己配置runner什么的了 直接写.gitlab-ci.yml文件就行,这里给出一个简单的依靠setup把python项目打包成whl文件的方法 首先写.gitlab-ci.yml文件,放到项目根目录里 stages: # List of stages for jobs, and their or…

蓝桥杯每日真题 - 第24天

题目:(货物摆放) 题目描述(12届 C&C B组D题) 解题思路: 这道题的核心是求因数以及枚举验证。具体步骤如下: 因数分解: 通过逐一尝试小于等于的数,找到 n 的所有因数…

YOLOv10改进,YOLOv10添加TransNeXt中的ConvolutionalGLU模块,CVPR2024,二次创新C2f结构

摘要 由于残差连接中的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉Transformer模型往往无法形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,作者提出了一种聚合注意力(Aggregated Attention),这是一种基于仿生设计的token混合器,模拟了生物的中央凹…

(微信小程序)基于Spring Boot的校园失物招领平台的设计与实现(vue3+uniapp+mysql)

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

快速排序hoare版本和挖坑法(代码注释版)

hoare版本 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>// 交换函数 void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }// 打印数组 void _printf(int* a, int n) {for (int i 0; i < n; i) {printf("%d ", a[i]);}printf("…

C++ 【异步日志模块和std::cout << 一样使用习惯替代性好】 使用示例,后续加上远程日志

简单 易用 使用示例 CLogSystem::Instance().SetLogLevel( E_LOG_LEVEL::LOG_LEVEL_INFO | E_LOG_LEVEL::LOG_LEVEL_DEBUG | E_LOG_LEVEL::LOG_LEVEL_DUMP );CLogSystem::Instance().SetFileInfo(true, "./log.txt");LogDebug() << 12;LogInfo() << &qu…

LINUX c++环境

安装docker 拉取code-server镜像 1.安装GCC&#xff0c;GDB yum -y install gcc yum -y install gcc-c yum install gdb 创建文件夹和文件 linux下C开发_linux c-CSDN博客 第一步:预处理&#xff1a;将源代码的.c 、.cpp 、.h 等文件包含到一个文件中&#xff0c;预处理结…

【论文阅读】 Learning to Upsample by Learning to Sample

论文结构目录 一、之前的上采样器二、DySample概述三、不同上采样器比较四、整体架构五、设计过程&#xff08;1&#xff09;初步设计&#xff08;2&#xff09;第一次修改&#xff08;3&#xff09;第二次修改&#xff08;4&#xff09;第三次修改 六、DySample四种变体七、复…

源码安装triton 及出错处理,跟最简应用示例 01 vectorAdd 验证

-1, 源码安装 triton出错信息 WARNING: The user site-packages directory is disabled. error: cant create or remove files in install directory The following error occurred while trying to add or remove files in the installation…

EC2还原快照

EC2还原快照 AWS EC2 磁盘快照 是您 Amazon Elastic Block Store (EBS) 卷在特定时间点的增量备份。您可以使用快照创建 EBS 卷的副本&#xff0c;以便在出现故障时恢复数据或将数据迁移到其他区域。 创建磁盘快照 找到ec2实例挂载的磁盘&#xff0c;直接选择创建快照 等待创建…

提升数据分析效率:Excel Power Query和Power Pivot的妙用

在日常工作中&#xff0c;微软的Excel Power Query和Power Pivot是提升数据处理和分析效率的利器。他们的特点也各不相同&#xff0c;Power Query侧重数据的高效导入与清洗&#xff0c;Power Pivot更测试数据建模与复杂计算。下面将介绍它们各自的功能&#xff0c;并提供应用案…

优先算法 —— 双指针系列 - 快乐数

1. 快乐数 题目链接&#xff1a; 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/happy-number/description/ 2. 题目解析 示例1&#xff1a; 示例2&#xff1a; 3. 算法原理 两种情况&#xff1a;我们可以把两种情况都看作为循环&#xff0…

【C++打怪之路Lv16】-- map set

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…

AD7606使用方法

AD7606是一款8通道最高16位200ksps的AD采样芯片。5V单模拟电源供电&#xff0c;真双极性模拟输入可以选择10 V&#xff0c;5 V两种量程。支持串口与并口两种读取方式。 硬件连接方式&#xff1a; 配置引脚 引脚功能 详细说明 OS2 OS1 OS2 过采样率配置 000 1倍过采样率 …

利用Python爬虫获取1688商品类目:技术解析

在电商领域&#xff0c;数据的获取和分析对于市场趋势的把握至关重要。1688作为中国领先的B2B电商平台&#xff0c;其商品类目的数据对于商家来说具有极高的价值。本文将详细介绍如何使用Python编写爬虫程序&#xff0c;以合法合规的方式获取1688商品类目信息。 Python爬虫技术…

全文单词统计

目标&#xff1a;统计词频 import scala.io.Source //知识点 //1.字符串.split("分隔符")&#xff1a;把字符串用指定的分隔符。拆分成多份&#xff0c;保存在数组中 object test1 {def main(args: Array[String]): Unit { //从文件1.txt中读入内容val contentSourc…

【SPIE出版|四大高校联合举办】先进算法与图像处理技术国际学术会议(IC-AAIP 2025)

&#x1f4da;IC-AAIP 2025【ISSN:0277786X】 2025年先进算法与图像处理技术国际学术会议 ⏰时间&#xff1a;2025年8月9日至10日 &#x1f440;地点&#xff1a;中国沈阳 &#x1f4dd;出版商&#xff1a;SPIE 组委负责人刘老师&#xff1a;13660240104 2025年先…

小程序-基于java+SpringBoot+Vue的戏曲文化苑小程序设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

【C/C++】内存管理详解:从new/delete到智能指针的全面解析

文章目录 更多文章C/C中的传统内存管理方式new和delete运算符malloc和free函数传统内存管理的弊端 智能指针的崛起智能指针的定义与作用C11引入的标准智能指针 详解C标准智能指针std::unique_ptr特点使用方法适用场景 std::shared_ptr特点使用方法适用场景 std::weak_ptr特点使…

通过 SSH 进行WordPress网站的高级服务器管理

我在管理hostease的服务器时&#xff0c;时常需要通过SSH登录服务器进行修改。而在网站管理中&#xff0c;SSH不仅是一个基础工具&#xff0c;更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH&#xff0c;你可以深入监控服务器的性能、精细管理系统资源&#xff0c…