เพื่อนับไดเร็กทอรีทั้งหมด รวมถึงสิ่งที่ซ่อนอยู่ ในต้นไม้ที่หยั่งรากที่ไดเร็กทอรีปัจจุบัน .
ทั้ง
หา . -พิมพ์ d -printf '\n' | สุขา -l
หรือ
หา . -พิมพ์ d -พิมพ์f x | สุขา - ค
(คุณสามารถแทนที่อักขระใด ๆ แทน x
: หากคุณเลือกอักขระพิเศษสำหรับเชลล์ อย่าลืมใส่เครื่องหมายอัญประกาศหรือหลีกอักขระนั้น) โดยใช้ พิมพ์f '\n' | สุขา -l
หรือ พิมพ์f x | สุขา - ค
แทนที่จะส่งรายชื่อไฟล์ไปให้ สุขา -l
จะทำให้การนับถูกต้องแม้ว่าจะมีไดเร็กทอรีที่มีชื่อก็ตาม บรรจุ ขึ้นบรรทัดใหม่
คำสั่งทั้งสองรวมถึงไดเร็กทอรีเริ่มต้น .
ในการนับ - หากคุณต้องการนับอย่างเคร่งครัด ย่อยไดเรกทอรีแล้วลบ 1 หรือเพิ่ม - ความลึกขั้นต่ำ 1
หา . -ความลึกขั้นต่ำ 1 -type d -printf '\n' | สุขา -l
หรือใช้ ! -ชื่อ .
เพื่อไม่รวม .
ไดเร็กทอรีอย่างชัดเจน
หากคุณต้องการยกเว้นไดเร็กทอรีที่ซ่อนอยู่ (รวมถึงที่เป็นไปได้ ไม่ใช่- ไดเร็กทอรีย่อยที่ซ่อนอยู่ของไดเร็กทอรีที่ซ่อนอยู่) จากนั้น พรุน อดีตพวกเขา
ค้นหา -minเชิงลึก 1 -type d \( -name '.*' -prune -o -printf x \) | สุขา - ค
อีกวิธีหนึ่งคือใช้การหมุนซ้ำของเชลล์เพื่อสำรวจต้นไม้ ใช้ zsh เช่น
dirs=( **/(ND/) )
พิมพ์ $#dirs
ที่ไหน (ND/)
เป็น รอบคัดเลือกระดับโลก ที่ทำให้ **/
จับคู่ไดเร็กทอรีเท่านั้นและรวมที่ซ่อนอยู่ ("ง
ot") อัน - ละเว้น the ง
หากคุณต้องการนับเฉพาะไดเร็กทอรีที่ไม่ซ่อนอยู่
คุณสามารถทำสิ่งที่คล้ายกันใน bash:
shopt -s nullglob dotglob globstar
ตั้ง -f -- **/
พิมพ์f '%d\n' "$#"
แต่ไม่เหมือนกับของ zsh /
รอบคัดเลือก, the **/
รูปแบบลูกโลกจะจับคู่ทุกอย่างที่ดูเหมือนไดเร็กทอรี รวมถึงลิงก์สัญลักษณ์ไปยังไดเร็กทอรี