นับจำนวนไฟล์ภายในไดเรกทอรีใน Linux หรือไม่ [ปิด]


333

เพื่อนับจำนวนไฟล์ในไดเรกทอรีฉันมักจะใช้

ls directory | wc -l

แต่มีคำสั่งอื่นที่ไม่ได้ใช้wc?


16
มีปัญหาอะไรwcที่ทำให้คุณไม่สามารถใช้งานได้
vanza

5
ไม่ได้จริงๆ โดยทั่วไปคำสั่ง Unix มีจุดประสงค์เพื่อใช้ในลักษณะนี้ถูกล่ามโซ่ในท่อ
Michael Berkowski

2
ฉันกำลังเชื่อมต่อผ่าน ssh ไปยังโฮสต์อื่นเพื่อเข้าถึงข้อมูลบางอย่าง น่าเสียดายที่คำสั่งพื้นฐานจำนวนมากดูเหมือนจะไม่สามารถทำงานกับโฮสต์นี้ได้ ถ้าฉันใช้ wc มันจะส่งกลับ "คำสั่งที่ไม่รู้จัก" ดังนั้นฉันกำลังมองหาตัวเลือกอื่น ๆ
Kantura

7
ใช้treeคำสั่ง มันจะให้ต้นไม้และที่ด้านล่างบอกจำนวนไฟล์และไดเรกทอรีที่มี tree -aหากคุณต้องการไฟล์ที่ซ่อนอยู่ยังใช้
เอลียาห์ลินน์

5
@vanza " เกิดปัญหาอะไรขึ้นกับ wc " จะเกิดอะไรขึ้นถ้าไฟล์มีชื่อ\nในไฟล์? ใช่ไม่น่าเป็นไปได้อย่างยิ่ง ! แต่ก็ยังใช้ได้จริงและเป็นไปได้
JamesThomasMoon1979

คำตอบ:


524

นี่คือหนึ่ง:

ls -l . | egrep -c '^-'

บันทึก:

ls -1 | wc -l

ซึ่งหมายความว่า:: lsรายการไฟล์ใน dir

-1: (นั่นคือหนึ่งรายการ) เพียงหนึ่งรายการต่อบรรทัด เปลี่ยนเป็น -1a ถ้าคุณต้องการซ่อนไฟล์ด้วย

|: ส่งออกไปยังท่อ ...

wc: "การนับจำนวนคำ"

-l: นับlines


1
ไม่รอ . ฉันทำบูบู คุณพูดถูก Sajad Lfc อย่างแน่นอน ls -1 dir | egrep -c '' นี่จะคืนค่าจำนวนไฟล์ใน dir ขอบคุณ
Kantura

1
@SajadKaruthedath ls -l . | egrep -c '^-'ไม่นับไฟล์ที่ซ่อนอยู่ ผมขอแนะนำให้เพิ่มธง-a ls
JamesThomasMoon1979

1
@ JamesThomasMoon1979: โปรดตรวจสอบคำอธิบายของฉัน
Sajad Karuthedath

1
สิ่งนี้แสดงข้อผิดพลาดเมื่อไม่มีไฟล์ในโฟลเดอร์ ls -1 /dir 2>/dev/null | wc -lใช้ นี่คือผลลัพธ์จาก ls ถูกนำไปยัง / dev / null และผลลัพธ์คือศูนย์ที่สะอาด
Sathish

6
@runios นั่นเป็นเพราะls -lส่งคืนบรรทัดเพิ่มเติมที่ด้านบนเพื่อเพิ่มขนาดไฟล์สำหรับจำนวนเงินทั้งหมด คุณควรใช้และไม่ls -1 ls -lนอกจากนี้หากต้องการไฟล์ที่ซ่อนอยู่ แต่ไม่มีไดเรกทอรี.และ..คุณควรใช้ls -1A | wc -l
Daniel Biegler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.