在linux中查找叶子目录

时间:2015-07-11 23:41:51

标签: shell unix find posix

find . -type d  -links 2 

似乎不起作用,并产生空输出,可能是因为我试图在NTFS格式化光盘上进行此操作?在我的家庭卷上它可以工作。

此外,有趣的是,似乎各种dirs只输出.ls -dAfind . -type d -links 1输出所有目录。

NTFS刚刚在Linux上崩溃了吗?

2 个答案:

答案 0 :(得分:0)

您的命令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将为您提供包含两个链接的文件列表。

答案 1 :(得分:0)

我实际上发现了一个讨厌的替代方案,以防有人对linux中的NTFS分区有同样的问题:

找到。 -type d -exec sh -c' test $(查找" $ 0" -maxdepth 1-type d | wc -l)-eq 1' {} \; -exec whatever_you_want_here {} \;

它可以解决,因为在叶子目录中,唯一返回的目录是'。'