目录的硬链接数量是否与其中的子目录数量相对应?

目录的硬链接数量是否与其中的子目录数量相对应?

使用 显示目录时ls -l,其链接数(输出中的第二个字段)至少为两个:一个用于目录名称,一个用于.

$ mkdir foo
$ ls -l
total 2
drwxr-xr-x  2 user   wheel  512  4 oct 14:02 foo

是否可以始终假设 2 以上的链接数与此目录中的子目录数(..链接)相对应?

答案1

虽然通常您只能使用指向目录的符号链接,这不会影响链接数,但在某些情况下目录可以使用硬链接(IIRC OSX 的 TimeMachine 功能使用此类链接),因此可能无法总是得到保证。

ls更安全地方法是使用and grep(或者find)对命令进行扫描wc以计算实际存在的子目录数,而不是尝试从当前目录的链接数中进行猜测。

答案2

你正确地观察到所有目录都包含 . 和 ..,因此,如果你从输出中减去两个

ls -la | grep '^d' | wc -l

您应该获取当前工作目录中的目录数。

答案3

这并不能回答您关于 ls -l 的问题,但是我使用 tree -d 来实现这一点,效果非常好。

答案4

我会用 find

find ./foo -type d | wc -l

最终-maxdepth选择

相关内容