我有两个文件MD1
和MD2
。
MD1
包含md5sums:
5f31caf675f2542a971582442a6625f6 /root/md5filescreator/hash1.txt
4efe4ba4ba9fd45a29a57893906dcd30 /root/md5filescreator/hash2.txt
1364cdba38ec62d7b711319ff60dea01 /root/md5filescreator/hash3.txt
其中hash1
,hash2
和hash3
是文件夹中存在的三个文件md5filescreator
。
类似地MD2
包含:
163559001ec29c4bbbbe96344373760a /root/md5filescreators/hash1.txt
4efe4ba4ba9fd45a29a57893906dcd30 /root/md5filescreators/hash2.txt
1364cdba38ec62d7b711319ff60dea01 /root/md5filescreators/hash3.txt
这些文件在文件夹中的位置md5filescreators
。
我想将中的校验和md5filescreator
与中相应文件的校验和进行比较md5filecreators
。
对于具有相同校验和的文件,shell脚本应返回“确定”,对于没有校验和的文件,则应返回FALSE,并返回文件名。
可以使用md5sum --check
它来完成此操作(因为它通常只检查1个MD5文件中的任何更改)?
我想知道是否可以使用
md5sum --check
?(因为它通常只检查1个MD5文件中的任何更改)。
不,不能。
md5sum --check
旨在读取输入文件第二列中每个文件的路径,并再次检查其MD5校验和,再检查第一列中报告的校验和;如果要直接比较两个文件中的校验和,则必须比较文本文件。
使用paste
+ AWK,您可以执行以下操作:
paste file1 file2 | awk '{x = $1 == $3 ? "OK" : "FALSE"; print $2" "x}'
paste file1 file2
:file1
在的第N行上连接第N的行file2
;awk '{x = $1 == $3 ? "OK" : "FALSE"; print $2" "x}'
:如果第一个字段等于第三个字段(即MD5的总和),则将“ OK”x
分配给,否则将“ FALSE”分配给x
并打印第二个字段(即文件名),后跟值x
。% cat file1
5f31caf675f2542a971582442a6625f6 /root/md5filescreator/hash1.txt
4efe4ba4ba9fd45a29a57893906dcd30 /root/md5filescreator/hash2.txt
1364cdba38ec62d7b711319ff60dea01 /root/md5filescreator/hash3.txt
% cat file2
163559001ec29c4bbbbe96344373760a /root/md5filescreators/hash1.txt
4efe4ba4ba9fd45a29a57893906dcd30 /root/md5filescreators/hash2.txt
1364cdba38ec62d7b711319ff60dea01 /root/md5filescreators/hash3.txt
% paste file1 file2 | awk '{x = $1 == $3 ? "OK" : "FALSE"; print $2" "x}'
/root/md5filescreator/hash1.txt FALSE
/root/md5filescreator/hash2.txt OK
/root/md5filescreator/hash3.txt OK
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句