我有 2 个文件 test.txt 和 test.txt.md5。我想验证 test.txt 的校验和。
gnu 工具 md5sum 需要以下格式的 md5 文件:“[md5-hash][空格][空格][文件名]”(md5sum -c test.txt.md5)。不幸的是我的 test.txt.md5 仅包含 md5 哈希(没有空格和文件名)。
如何将哈希从“test.txt.md5”文件传递到“md5sum -c”命令?我想我必须使用标准输入,但是我见过的所有示例都尝试重新创建 md5sum 文件格式
文件的内容是:
test.txt
:
test
和test.txt.md5
:
d8e8fca2dc0f896fd7cb4cb0031ba249
答案1
与许多命令一样,如果选项的值为(from ),md5sum
则能够从标准输入读取:-
man md5sum
打印或检查 MD5(128 位)校验和。没有文件,或者当FILE为-时,读取标准输入。
由于您知道文件名,因此您可以简单地打印 md5 文件的内容、几个空格,然后是名称并将其传递给md5sum
:
$ cat test.txt.md5
5a6d311c0d8f6d1dd03c1c129061d3b1
$ md5sum -c <(printf "%s test.txt\n" $(cat test.txt.md5))
test.txt: OK
另一种选择是将文件名添加到您的文件中:
$ sed -i 's/$/ test.txt/' test.txt.md5
$ md5sum -c test.txt.md5
test.txt: OK
答案2
您可以重新计算文件的 MD5 校验和并将其与存储在中的校验和进行比较test.txt.md5
:
cmp test.txt.md5 <(md5sum test.txt | cut -d\ -f1)
如果没有输出,则校验和匹配。