ฉันต้องการค้นหาจำนวนทั้งหมดของจำนวนไฟล์ภายใต้โฟลเดอร์และโฟลเดอร์ย่อยทั้งหมด
ฉันต้องการค้นหาจำนวนทั้งหมดของจำนวนไฟล์ภายใต้โฟลเดอร์และโฟลเดอร์ย่อยทั้งหมด
คำตอบ:
อาจจะเป็นสิ่งที่ชอบ
find . -type f | wc -l
จะทำเคล็ดลับ ลองคำสั่งจากโฟลเดอร์หลัก
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- ฉันยอมรับการพิมพ์สำหรับโซลูชันของฉันแทนที่จะเป็น -exec echo
ใช้tree
คำสั่ง คุณอาจต้องติดตั้งtree
แพคเกจ
มันจะแสดงรายการไฟล์และโฟลเดอร์ทั้งหมดภายใต้โฟลเดอร์ที่กำหนดและรายการสรุปในตอนท้าย
หากต้องการนับไฟล์ (แม้แต่ไฟล์ที่ไม่มีนามสกุล) ที่รูทของไดเรกทอรีปัจจุบันให้ใช้:
ls -l | grep ^- | wc -l
หากต้องการนับไฟล์ (แม้แต่ไฟล์ที่ไม่มีนามสกุล) ซ้ำ ๆจากรูทของไดเรกทอรีปัจจุบันให้ใช้:
ls -lR | grep ^- | wc -l
tree
วิธีที่เร็วและง่ายที่สุดคือการใช้ ความเร็วจะถูก จำกัด โดยเทอร์มินัลเอาท์พุทของคุณดังนั้นหากคุณส่งผลลัพธ์ให้tail -1
คุณจะได้รับผลทันที คุณยังสามารถควบคุมระดับไดเรกทอรีที่คุณชอบผลลัพธ์โดยใช้-L
ตัวเลือก สำหรับการส่งออก colorized -C
ใช้ ตัวอย่างเช่น:
$ tree share/some/directory/ | tail -1
558 directories, 853 files
$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files
find -type f -printf . | wc -c
อย่านับบรรทัดค้นหาออกเพราะชื่อไฟล์ที่มี 99 บรรทัดใหม่จะนับเป็น 100 ไฟล์
ใช้คำสั่งนี้สำหรับแต่ละโฟลเดอร์ในพา ธ
for D in *; do echo $D; find $D -type f| wc -l; done
หาดูเหมือนจะเร็วกว่าต้นไม้ดังนั้นฉันใช้ด้านล่างเพื่อนับไฟล์ในแต่ละไดเรกทอรีของไดเรกทอรีการทำงานปัจจุบัน (ละเว้นไฟล์ใน CWD) ด้วยการอนุญาตให้ไดเรกทอรีมีช่องว่าง:
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
ls
เป็นความคิดที่ไม่ดี
คุณสามารถใช้ได้ find . | wc -l
find .
จะแสดงรายการไฟล์และโฟลเดอร์และเนื้อหาทั้งหมดที่เริ่มต้นในโฟลเดอร์ปัจจุบันของคุณ
wc -l
นับผลลัพธ์ของการค้นหา