Unix
目錄的硬連結數是否與其中的子目錄數相對應?
使用 顯示目錄時
ls -l
,它們的連結數(輸出中的第二個欄位)至少為兩個:一個用於目錄名稱,一個用於.
$ mkdir foo $ ls -l total 2 drwxr-xr-x 2 user wheel 512 4 oct 14:02 foo
總是假設 2 以上的連結數對應於此目錄中的子目錄數 (
..
連結 ) 是否安全?
雖然通常您只能使用指向目錄的符號連結,這不會影響連結計數,但在某些情況下,目錄可以使用硬連結(IIRC OSX 的 TimeMachine 功能使用此類連結),因此可能並不總是得到保證。
您會更安全地使用
ls
andgrep
(或者也許find
)將掃描傳遞給wc
命令以計算實際存在的子目錄的數量,而不是嘗試從目前目錄連結計數中猜測。
您正確地觀察到所有目錄都包含 . 和..,所以如果你從輸出中減去兩個
ls -la | grep '^d' | wc -l
您應該獲得目前工作目錄中的目錄數。