无法使用 Linux 验证在 Windows 上创建的 md5 校验和

无法使用 Linux 验证在 Windows 上创建的 md5 校验和

验证文件内的校验和通常使用 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 文件!

由于这是一个重大的考验,而且我在网上找不到太多的帮助,所以我决定与全世界分享它。

相关内容