在 Mac 上,如何找到 NTFS 分区上所有具有相同名称且不区分大小写的文件?

在 Mac 上,如何找到 NTFS 分区上所有具有相同名称且不区分大小写的文件?

情况是这样的,我的一个 NTFS 格式的外部驱动器上有大量文件。我希望将所有这些文件复制到我的 MacBook Pro 上。

NTFS 与健全的文件系统一样,区分大小写。HFS 不区分大小写。

在成千上万个文件和目录中,HFS 认为其中存在一个或多个“重复项”。这些重复项阻止我将整个目录的数据复制到我的 Mac 上。

(MacOSX 会抛出一个常规错误来解释问题,但不会指出具体文件,而且也不会提供跳过的选项)

解决这个问题的最佳方法是什么?有谁知道一种可以查找具有相同的不区分大小写的名称的文件和目录的工具?

- 编辑 -

所以我做了一个cp -i并让它运行一整夜,目的是醒来后看到它停留在重复项上,但当我醒来时它已经完成了!但是,结果目录有 13,906 个项目,而原始目录有 13,914 个,因此听起来要么cp由于不区分大小写而无法识别相同的文件,要么即使有也会忽略它们-i

答案1

我不知道这是否最好的方法,但以下命令可以满足您的要求并列出存在重复的不区分大小写的名称的所有文件和目录条目:

find /path/to/check -type f -o -type d | tr A-Z a-z | sort | uniq -d

它的作用是,找到 /path/to/check 中的所有文件和目录,使输出小写,对这些条目进行排序(因为 uniq 只比较相邻的行,所以这是必需的),并进行过滤以仅显示重复的行,即重复的文件或目录条目。

例如:如果我想在 OS X 上检查 Bootcamp 卷是否有重复项,我会打开终端应用程序并执行

find /Volumes/BOOTCAMP/ -type f -o -type d | tr A-Z a-z | sort | uniq -d

答案2

我没用过,但是分区声称能够在 HFS+(不区分大小写)和 HFSX(区分大小写)之间进行非破坏性的转换。

答案3

我可以打开它 [区分大小写的 HFSX] 而不格式化我的整个驱动器吗

您可以在 Mac OS X 上创建区分大小写的磁盘映像,该映像可以作为普通硬盘卷安装。

# cf. http://codesnippets.joyent.com/posts/show/8617
IMAGE="${HOME}/Desktop/Case Sensitive Test.dmg"
VOLNAME="Case Sensitive Test"

hdiutil create "${IMAGE}" -size 10m -fs HFSX -volname "${VOLNAME}" -layout NONE

hdiutil attach "${IMAGE}"

cd "/Volumes/${VOLNAME}"
touch foo.txt Foo.txt
open .
ls -l [Ff]oo.txt
stat -f "inode: %i  --  name: %N" [Ff]oo.txt

cd ~
hdiutil detach "/Volumes/${VOLNAME}"

答案4

从 Mac OS 10.3 开始该命令newfs_hfs -s将创建一个区分大小写的新文件系统。

相关内容