使用 显示目录时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
选择