【发布时间】:2015-07-11 23:41:50
【问题描述】:
find . -type d -links 2
似乎无法正常工作,并产生空输出,可能是因为我试图在 NTFS 格式光盘上执行此操作?在我的家庭音量上它可以工作。
另外,有趣的是,似乎各种目录都只是输出. 到ls -dA 和find . -type d -links 1 输出所有目录。
Linux 上的 NTFS 是否刚刚损坏?
【问题讨论】:
find . -type d -links 2
似乎无法正常工作,并产生空输出,可能是因为我试图在 NTFS 格式光盘上执行此操作?在我的家庭音量上它可以工作。
另外,有趣的是,似乎各种目录都只是输出. 到ls -dA 和find . -type d -links 1 输出所有目录。
Linux 上的 NTFS 是否刚刚损坏?
【问题讨论】:
我实际上找到了一个讨厌的替代方案,以防有人在 linux 中的 NTFS 分区遇到同样的问题:
找到 . -type d -exec sh -c 'test $(find "$0" -maxdepth 1 -type d | wc -l) -eq 1' {} \; -execwhatever_you_want_here {} \;
它成功了,因为在叶子目录中,唯一返回的目录是'.'
【讨论】:
您的命令find . -type d -links 2 查找具有两个硬链接的目录。
在 Windows according to Microsoft 上,使用 CreateHardLink 函数创建硬链接。此外,according to Microsoft,该函数不支持目录,仅支持文件:
在现有文件和新文件之间建立硬链接。这个 函数仅在 NTFS 文件系统上受支持,并且仅适用于 文件,而不是目录。
换句话说,find . -type d -links 2 在 NTFS 上没有返回目录的原因是 NTFS 上没有硬链接目录。如果您想要硬链接目录,则需要不同的文件系统。
因此,如果尝试硬链接 NTFS 文件系统上的目录,ln 将报告错误也就不足为奇了:
$ ln dir1 dir2
ln: ‘dir1’: hard link not allowed for directory
NTFS 确实支持硬链接文件,find . -type f -links 2 将为您提供包含两个链接的文件列表。
【讨论】: