【嵌入式开发 Linux 常用命令系列 7.3 -- md5sum 命令介绍 】

2023-12-14 22:31:48

文章目录

md5sum 命令介绍

要在shell脚本中判断两个不同目录下的文件的MD5值是否相等,并在不相等的情况下将目录A中的文件复制到目录B中,你可以编写一个脚本如下:

#!/bin/bash 

# 定义文件路径 
fileA="/path/to/directoryA/filename" 
fileB="/path/to/directoryB/filename" 

# 检查文件是否存在 
if [[ ! -f "$fileA" ]]; then 
	echo "File $fileA does not exist." 
	exit 1 
fi 

# 计算两个文件的MD5值 
md5A=$(md5sum "$fileA" | cut -d ' ' -f1) 
md5B=$(md5sum "$fileB" | cut -d ' ' -f1) 

# 比较MD5值 
if [[ "$md5A" != "$md5B" ]]; then 
	# MD5值不相同,将文件从目录A复制到目录B 
	cp "$fileA" "$fileB" echo "File has been copied from $fileA to $fileB." 
else 
	echo "Files are the same, no action taken." 
fi 

确保将 /path/to/directoryA/filename/path/to/directoryB/filename 替换为你需要比较的实际文件路径。

这个脚本的工作流程如下:

  1. 定义两个文件的路径。
  2. 检查文件A是否存在,如果不存在,脚本将打印一条消息并退出。
  3. 使用 md5sum 命令分别计算这两个文件的MD5值。
  4. 使用 cut 命令提取MD5值(md5sum 的输出通常是两部分,第一部分是MD5值,第二部分是文件名)。
  5. 比较两个文件的MD5值。
  6. 如果MD5值不相同,则使用 cp 命令将文件从目录A复制到目录B,并打印一条消息。
  7. 如果MD5值相同,则打印一条消息,不执行任何操作。

你可以将这个脚本保存到一个文件中,比如叫 copy_if_diff.sh,然后给予执行权限:

chmod +x copy_if_diff.sh 

之后就可以执行这个脚本了。注意,这个脚本没有处理目录B中不存在文件的情况。如果文件B不存在,md5sum 将会返回一个错误。你可能需要在计算MD5之前添加额外的检查来处理这种情况。

文章来源:https://blog.csdn.net/sinat_32960911/article/details/134934643
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。