验证文件内的校验和通常使用 Linux 和 md5sum 像这样工作。
md5sum -c file.md5
但是,在 Windows 文件上这样使用会出现错误,我花了很长时间才弄清楚。第一个错误很简单:Windows 使用反斜杠代替斜杠,并且行尾不同。这可以修复!
sed 's/\r$//' file.md5 | sed 's_\\_/_g' | md5sum -c
第一个 sed 处理行尾和第二个反斜杠。
虽然这确实解决了主要问题,但它总是忽略文件的第一行,并在最后无用地显示:
md5sum:警告:1 行格式不正确
切换行不会改变这一点。文件的第一行始终会被忽略。
答案1
我注意到将全部内容复制到新文件中不会产生此错误,最终找到了答案。
因此,事实证明,在 Windows 中,该文件前面有一些二进制字符不会在文本编辑器中显示,但会由 md5sum 解释。
因此,解决方案就是消除这些问题:
sed 's/\r$//' file.md5 | sed 's_\\_/_g' | sed -e '1s/^.//' | md5sum -c
第三个 sed 删除了第一个二进制 blob,最终使我能够检查在 Windows 上生成的 md5 文件!
由于这是一个重大的考验,而且我在网上找不到太多的帮助,所以我决定与全世界分享它。