【发布时间】:2015-03-14 10:40:10
【问题描述】:
我尝试在 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
当我在硬盘驱动器上运行原始命令时,我看到一堆“没有这样的文件或目录”错误,并且这些文件被跳过,没有得到校验和。
有什么想法吗?
【问题讨论】:
-
当您使用名称模式“0153*”时,它真的抱怨以“0154”开头的文件吗?我认为它甚至不会检查类型,因为名称与模式不匹配。其他一些想法:外部驱动器使用什么文件系统?通过
hexdump -C将这些find命令的输出和stderr 通过管道传输,并在两种情况下比较文件名的字节。还可以与同一目录上ls的输出的十六进制转储进行比较。 -
是的,它确实在抱怨!!!!让我试试你的建议
-
在运行
find之前尝试export LC_TYPE=C。 -
很难显示格式化的回复,但您正在处理文件系统的问题。这些文件位于 NTFS 驱动器上,但如果将文件复制到本地 (HFS),则不会发生错误。无论文件是在 HFS 还是 NTFS 驱动器上,Hexdump 都显示相同的值“65 cc 80”。实际上我遇到了一些困难,因为 NTFS 驱动器上的“ls 0154*”也失败了,所以我不得不使用没有“-type f”的“find”
-
export LC_TYPE=C没有帮助。
标签: macos bash shell find bootcamp