ค้นหาจำนวนไฟล์ในโฟลเดอร์และโฟลเดอร์ย่อยหรือไม่


คำตอบ:


224

อาจจะเป็นสิ่งที่ชอบ

find . -type f | wc -l

จะทำเคล็ดลับ ลองคำสั่งจากโฟลเดอร์หลัก


3
การแก้ปัญหาจะล้มเหลวในไฟล์ที่ชื่อมีการขึ้นบรรทัดใหม่
ผู้ใช้ที่ไม่รู้จัก

2
ไม่รู้จัก @user:find . -type f -ls | wc -l
จัด

1
เร็วยิ่งขึ้น:find . -type f -print0 | tr -d -c '\0' | wc -c
จัดการ

13
@ การจัดเรียง: ยิ่งเร็วขึ้น: find . -type f -printf . | wc -c- ฉันยอมรับการพิมพ์สำหรับโซลูชันของฉันแทนที่จะเป็น -exec echo
ผู้ใช้ที่ไม่รู้จัก

1
คำสั่งนี้ทำงานเหมือนมีเสน่ห์ในกรณีของฉันดูเหมือนว่ามนต์ดำ
pcko1

27

ใช้treeคำสั่ง คุณอาจต้องติดตั้งtreeแพคเกจ

มันจะแสดงรายการไฟล์และโฟลเดอร์ทั้งหมดภายใต้โฟลเดอร์ที่กำหนดและรายการสรุปในตอนท้าย


14

หากต้องการนับไฟล์ (แม้แต่ไฟล์ที่ไม่มีนามสกุล) ที่รูทของไดเรกทอรีปัจจุบันให้ใช้:

ls -l | grep ^- | wc -l

หากต้องการนับไฟล์ (แม้แต่ไฟล์ที่ไม่มีนามสกุล) ซ้ำ ๆจากรูทของไดเรกทอรีปัจจุบันให้ใช้:

ls -lR | grep ^- | wc -l

1
สิ่งเหล่านั้นจะไม่นับไฟล์ที่ซ่อนอยู่
ผู้ใช้ไม่ทราบ

จริง ฉันมีแนวโน้มที่จะยอมรับและใช้คำตอบของคุณเป็นวิธีแก้ปัญหา
user38537

13

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

ถ้ามันไม่ได้อยู่ที่คุณจะได้รับที่นี่


9
find -type f -printf . | wc -c

อย่านับบรรทัดค้นหาออกเพราะชื่อไฟล์ที่มี 99 บรรทัดใหม่จะนับเป็น 100 ไฟล์


4
ชื่อไฟล์ที่มีบรรทัดใหม่เป็นเคสขอบที่หายากอย่างไม่น่าเชื่อ
DisgruntledGoat

8
@DisgruntledGoat: ดังนั้นข้อผิดพลาดจะหายากมาก
ผู้ใช้ที่ไม่รู้จัก

ฉันชอบเคสที่ดีโดยเฉพาะหลายปีต่อมา
user38537


1

หาดูเหมือนจะเร็วกว่าต้นไม้ดังนั้นฉันใช้ด้านล่างเพื่อนับไฟล์ในแต่ละไดเรกทอรีของไดเรกทอรีการทำงานปัจจุบัน (ละเว้นไฟล์ใน CWD) ด้วยการอนุญาตให้ไดเรกทอรีมีช่องว่าง:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done


การแยกวิเคราะห์ผลลัพธ์lsเป็นความคิดที่ไม่ดี
souravc

โค้ดที่ยอดเยี่ยมฉันจะจัดเรียงบรรทัดผลลัพธ์ในการเพิ่มหรือลดจำนวนไฟล์ได้อย่างไร
nightcrawler

0

คุณสามารถใช้ได้ find . | wc -l

find .จะแสดงรายการไฟล์และโฟลเดอร์และเนื้อหาทั้งหมดที่เริ่มต้นในโฟลเดอร์ปัจจุบันของคุณ
wc -lนับผลลัพธ์ของการค้นหา


นับการแก้ปัญหานี้ยังโฟลเดอร์ผมให้เครื่องหมายทำให้มันจับคู่โอกาสของฉันที่ฉันไม่ต้องการที่จะนับพวกเขาใน :)
เปลือย

การแก้ปัญหาจะล้มเหลวในไฟล์ที่ชื่อมีการขึ้นบรรทัดใหม่
ผู้ใช้ที่ไม่รู้จัก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.