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

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

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

总是假定以上链接的数量2对应于此目录中的子目录数( ..链接)是否安全?

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

你会更安全的使用lsgrep (或者可能find )来扫描wc命令来计算实际存在的子目录的数量,而不是从当前目录中猜测链接数量。

你是正确的观察所有目录包含。 和..,所以如果你从输出中减去两个

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

你应该获得当前工作目录中的目录数量。

这并不能回答你关于ls -l的问题,但是我使用了tree -d,它的工作原理非常好。

我会用find

 find ./foo -type d | wc -l 

最终用-maxdepth选项