如何将 Windows 文件名(从 checksums.md5)转换为 *nix 表示法,以便我可以在我的 shell 中使用 md5sum 来使用它?

如何将 Windows 文件名(从 checksums.md5)转换为 *nix 表示法,以便我可以在我的 shell 中使用 md5sum 来使用它?

我有一些checksums.md5来自 ntfs 外部驱动器的验证文件,但使用 Windows 表示法:\而不是/,文件名之间的空格(未转义),保留的 shell 字符(例如(&', 等等)。

checksums.md5一堆校验和和文件名:

;Created by program
;2010

f12f75c1f2d1a658dc32ca6ef9ef3ffc  *My Windows & Files (2010)\[bak]\testing.wmv
53445e1a0821b790872e60bd7a166887  *My Windows Files' 2 (2012)\[bak]\testing.wmv
53445e1a0821b790872e60bd7a166887  *My Windows Files ˜nicóde (2012)\[bak]\testing.wmv
;Finished

我想使用它checksums.md5来验证我复制到机器上的文件:但我使用的是 Linux,因此我需要将里面的名称从 Windows 转换为 Linux,以便从 shellchecksums.md5使用该实用程序。我示例中的第一行将变为:md5sum

f12f75c1f2d1a658dc32ca6ef9ef3ffc  My\ Windows\ \&\ Files\ \(2010\)/\[bak\]/testing.wmv

是否有一些应用程序可以实现这一点(将文件列表从 Windows cmd 符号转换为 Linux shell 符号)或者我是否需要使用 sed 创建一个 bash 脚本来“替换”文件名中的“错误”内容?

答案1

sed -i 's|\\|/|g' checksums.md5

输出md5sum格式不使用任何“shell 符号” – 既不是cmd也不是sh。每行恰好有两个字段(哈希和文件名),因此文件名不需要转义。

仅有的\不同之处在于,在不同的系统中, versal/作为路径分隔符的使用方式不同。(大多数 Windows 程序/也接受。)只需替换所有反斜杠即可。

答案2

md5deep 不仅适用于 Windows 和 Linux,而且 100% 跨平台兼容。请查看http://md5deep.sourceforge.net/

相关内容