Linux md5sum命令介绍
md5sum
(Message-Digest Algorithm 5)是一个用于计算和验证文件md5哈希值的工具。md5是一种广泛使用的密码散列函数,能为任何一段文本或文件生成一个128位(16字节)的散列值。虽然md5不再是一种安全的加密方式,它在检查文件完整性方面仍然非常有用,特别是用于验证长时间传输或存储的文件是否发生了改变。
Linux md5sum命令适用的Linux版本
md5sum
工具在多数Linux发行版中都是可用的,包括但不限于Ubuntu、Debian、Fedora、CentOS等。在某些较旧的系统或者定制的发行版中,如果md5sum
不可用,可能需要安装它。
-
在基于Debian的系统中,可以使用以下命令安装:
sudo apt-get install coreutils ```
-
在CentOS 7中,可以使用以下命令安装:
sudo yum install coreutils ```
-
在CentOS 8中,可以使用以下命令安装:
sudo dnf install coreutils ```
如果发现bash: md5sum: command not found
错误,可以根据上面的指引进行安装。
Linux md5sum命令的基本语法
语法格式:
md5sum [OPTION]... [FILE]...
Linux md5sum命令的常用选项或参数说明
选项 | 描述 |
---|---|
-b , --binary | 以二进制模式读取输入文件(默认选项) |
-c , --check | 读取md5和文件名的列表,并检查所有文件的md5是否匹配 |
--tag | 创建一个符合BSD风格的校验和 |
-t , --text | 以文本模式读取输入文件 |
--quiet | 在校验模式下,不输出任何通过校验的文件,只报告失败的文件 |
--zero | 当结合--check 使用时,校验文件中的文件名以NUL字符结束 |
--help | 显示帮助信息并退出 |
--version | 输出版本信息并退出 |
Linux md5sum命令的实例
实例1:计算文件的md5哈希值
计算指定文件的md5哈希值,并显示结果。
[linux@bashcommandnotfound.cn ~]$ md5sum example.txt
实例2:校验文件的md5哈希值
通过比较文件和校验和文件中的md5值来校验文件的完整性。
[linux@bashcommandnotfound.cn ~]$ md5sum -c checksums.md5
实例3:在校验时忽略成功的消息
只显示校验失败的文件,不显示成功的消息。
[linux@bashcommandnotfound.cn ~]$ md5sum --quiet -c checksums.md5
实例4:生成符合BSD风格的校验和
创建一个符合BSD风格的校验和输出格式。
[linux@bashcommandnotfound.cn ~]$ md5sum --tag example.txt
实例5:计算多个文件的md5哈希值
一次计算多个文件的md5哈希值。
[linux@bashcommandnotfound.cn ~]$ md5sum file1.txt file2.txt file3.txt
实例6:递归计算目录中所有文件的md5哈希值
使用find
命令配合md5sum
来递归计算某个目录下所有文件的md5哈希值。
[linux@bashcommandnotfound.cn ~]$ find /path/to/directory -type f -exec md5sum {} +
实例7:保存多个文件的md5哈希值到文件
计算一个或多个文件的md5哈希值,并将结果保存到一个文件中。
[linux@bashcommandnotfound.cn ~]$ md5sum file1.txt file2.txt > md5sums.txt
实例8:从标准输入计算md5哈希值
计算来自标准输入(stdin)的数据的md5哈希值。
[linux@bashcommandnotfound.cn ~]$ echo -n "Hello World" | md5sum
实例9:验证下载文件的md5哈希值
下载文件后,使用md5sum
验证其哈希值以确保文件完整性。
[linux@bashcommandnotfound.cn ~]$ wget http://example.com/file.zip
[linux@bashcommandnotfound.cn ~]$ echo "expected_md5_hash_value file.zip" | md5sum -c -
实例10:批量检查md5哈希值
检查一个目录下所有文件与预先保存的md5哈希值列表是否匹配。
[linux@bashcommandnotfound.cn ~]$ md5sum -c md5sums.txt
实例11:排除特定文件进行md5校验
使用find
命令排除特定文件或目录,只为其他文件计算md5。
[linux@bashcommandnotfound.cn ~]$ find /path/to/directory -type f ! -name 'exclude.txt' -exec md5sum {} +
实例12:结合xargs
使用md5sum
使用find
和xargs
命令来处理大量文件的情况。
[linux@bashcommandnotfound.cn ~]$ find /path/to/directory -type f -print0 | xargs -0 md5sum
实例13:生成校验文件并在不同目录校验
在一个目录生成md5校验文件,然后在另一个目录校验文件。
# 在source目录生成md5校验文件
[linux@bashcommandnotfound.cn ~]$ md5sum /source/path/* > /source/path/md5sums.txt
# 在destination目录校验
[linux@bashcommandnotfound.cn ~]$ cd /destination/path
[linux@bashcommandnotfound.cn ~]$ md5sum -c /source/path/md5sums.txt
实例14:使用循环来计算多个文件的md5哈希值
在一个脚本中使用循环为目录中的每个文件单独计算md5。
[linux@bashcommandnotfound.cn ~]$ for file in /path/to/directory/*; do md5sum "$file"; done
实例15:结合awk
输出特定格式的md5值
使用md5sum
和awk
来输出文件名和其md5值的特定格式。
[linux@bashcommandnotfound.cn ~]$ md5sum file.txt | awk '{print $1}'
Linux md5sum命令的注意事项
- md5算法已经不再被认为是安全的加密方式,因此不应用于安全敏感的数据验证。
- 当处理非文本和二进制文件时,要注意选择正确的模式(二进制或文本),尤其是在不同操作系统之间转移文件时。
- 在使用
-c
选项进行校验时,确保校验和文件的格式正确,否则md5sum
可能无法正确解析。 - 使用
md5sum
校验大文件时,可能会需要较长的时间,尤其是在计算能力较低的系统上。 - 如果遇到
bash: md5sum: command not found
错误,请根据您的Linux发行版安装coreutils
包。
评论区