วิธีที่ง่ายที่สุดดูเหมือนจะเป็น find /path/to/search -ls | wc -l
การค้นหาจะใช้ในการเดิน แต่ไฟล์และโฟลเดอร์ทั้งหมด
-ls
เพื่อแสดงรายการ (พิมพ์) ชื่อทั้งหมด นี่เป็นค่าเริ่มต้นและถ้าคุณปล่อยไว้มันจะยังคงใช้งานได้เหมือนเดิมเกือบทุกระบบ (เกือบเนื่องจากบางคนอาจมีค่าเริ่มต้นแตกต่างกัน) มันเป็นนิสัยที่ดีที่จะใช้สิ่งนี้อย่างชัดเจน
หากคุณเพียงแค่ใช้find /path/to/search -ls
ส่วนมันจะพิมพ์ไฟล์และไดเรกทอรีทั้งหมดไปที่หน้าจอของคุณ
wc
คือการนับคำ -l
ตัวเลือกที่จะบอกว่ามันจะนับจำนวนบรรทัด
คุณสามารถใช้มันได้หลายวิธีเช่น
- wc testfile
- cat testfile | ห้องน้ำ
ตัวเลือกแรกให้ wc เปิดไฟล์และนับจำนวนบรรทัดคำและตัวอักษรในไฟล์นั้น ตัวเลือกที่สองทำเช่นเดียวกัน แต่ไม่มีชื่อไฟล์มันอ่านจาก stdin
คุณสามารถ combime |
คำสั่งกับท่อ เอาต์พุตจากคำสั่งแรกจะถูกไพพ์ไปยังอินพุตของคำสั่งที่สอง ดังนั้นfind /path/to/search -ls | wc -l
ใช้ find เพื่อแสดงรายการไฟล์และไดเร็กทอรีทั้งหมดและดึงข้อมูลเอาต์พุตไปยัง wc Wc จะนับจำนวนบรรทัด
(ทางเลือกอื่นจะเป็น `ls | wc 'แต่การค้นหานั้นมีความยืดหยุ่นมากกว่าและเป็นเครื่องมือที่ดีในการเรียนรู้)
[แก้ไขหลังจากความคิดเห็น]
อาจเป็นประโยชน์ในการรวม find และ exec
เช่นfind / -type d ! \( -path proc -o -path dev -o -path .snap \) -maxdepth 1 -exec echo starting a find to count to files in in {} \;
จะแสดงรายการไดเรกทอรีทั้งหมดใน / แถบบางที่คุณไม่ต้องการค้นหา เราสามารถเรียกใช้คำสั่งก่อนหน้านี้ในแต่ละไฟล์โดยให้ผลรวมของไฟล์ต่อโฟลเดอร์ใน /
อย่างไรก็ตาม:
- ใช้ส่วนขยายเฉพาะของ GNU -maxdepth
มันจะทำงานบน Linux แต่จะไม่ทำงานบน unix-a-เหมือนกัน
- ฉันสงสัยว่าคุณอาจต้องการไฟล์จำนวนหนึ่งสำหรับแต่ละส่วนย่อย