Điều này thường đúng trên các hệ thống unix rằng số lượng liên kết đến một thư mục là số lượng thư mục con cộng với 2. Tuy nhiên, có những trường hợp điều này không đúng:
Một số thống nhất cho phép liên kết cứng đến thư mục. Sau đó, sẽ có nhiều hơn 2 liên kết không tương ứng với các thư mục con.
Có các hệ thống tập tin nơi các thư mục không có mục cho .
và ..
. Các GNU tìm thủ đề cập đến một số ví dụ trong phần thảo luận của nó -noleaf
tùy chọn (giúp chặn đứng một tối ưu hóa mà giả định rằng .
và ..
tồn tại trong tất cả các thư mục): “CD-ROM hoặc MS-DOS hệ thống tập tin hoặc AFS khối lượng gắn kết điểm”
Một cách gần như đáng tin cậy để đếm số lượng thư mục con (vẫn có thể thất bại nếu tên tệp chứa ký tự dòng mới) là
$(($(LC_ALL=C ls -la /path/to/directory | grep '^d' | wc -l) - 2)
Một cách đáng tin cậy hơn sử dụng các khối vỏ */
và .*/
; như thông thường xử lý trường hợp mẫu không khớp là một chút khó khăn (ngoại trừ trong bash và zsh nơi bạn có thể bật nullglob
tùy chọn).
-type d
, nhưng: 1. điều này đòi hỏi GNU find; 2. bạn cần trừ 1 cho thư mục bắt đầu (hoặc vượt qua-mindepth 1
).