0

我尝试在 OS X 10.9.5 上使用以下命令在外部驱动器上创建数十万张照片的 MD5 校验和。我得到了一堆错误。我正在使用 find 与通过管道传输到 xargs 的 nul 终止文件名,因为我认为它运行得最快。

find . -type f -not -name "checksums.md5" -print0 | xargs -0 md5 -r > checksums.md5

我已将其范围缩小到使用-type f,您可以在以下示例中看到:

mymac:Finals user$ find . -name "0153*"
./0153_IMG_4812_Coniston village.jpg

mymac:Finals user$ find . -name "0153*" -type f
./0153_IMG_4812_Coniston village.jpg
find: ./0154_IMG_4814_Après hike.jpg: No such file or directory

mymac:Finals user$ find . -name "0154*"
./0154_IMG_4814_Après hike.jpg

mymac:Finals user$ find . -name "0154*" -type f
find: ./0154_IMG_4814_Après hike.jpg: No such file or directory

当我在硬盘驱动器上运行原始命令时,我看到一堆“没有这样的文件或目录”错误,并且这些文件被跳过,没有得到校验和。

有任何想法吗?

4

1 回答 1

0

我没有解决方案,但我有一个解决方法:不要使用 Apple 的 HFS 驱动程序(在 Bootcamp 中)将文件从 HFS 驱动器复制到 NTFS,而是通过 SMB 或 VMWare Fusion 的共享文件夹(实际上是 SMB ?)

有两种方法可以创建电子坟墓角色。一种是使用 CP1252 中的扩展 ASCII 0xE8,另一种我刚刚了解到的显然是使用 Unicode 字节 0x0065(正则字母 'e',ASCII 0x65)+ 0x0300(结合重音)。

当我在 Bootcamp 中复制文件时,文件名包含 UTF-16le 字节序列 0x65 0x00 0x00 0x03(正则字母 'e' + 结合重音)

当我通过 VMWare 的共享文件夹或文件共享在 VMWare fusion 中复制文件时,文件名包含 UTF-16le 字节序列 0xE800(Windows 代码页 1252 扩展的 ASCII 电子坟墓字符)。

回到 OS X 下,通过管道输出findtohexdump -C为这个字符的两个变体提供相同的 UTF-8 字节序列:65 cc 80. 这大概就是为什么在 OS X 下事情对我来说分崩离析的原因。

于 2015-01-16T08:02:32.453 回答