ฉันจะแสดงรายการไฟล์ที่ไม่ว่างเปล่าโดยใช้ ls ได้อย่างไร


คำตอบ:


49

ฉันจะใช้find dirname -not -empty -lsโดยสมมติว่า GNU พบ


1
ใครสนใจอธิบายการลงคะแนนเสียง?
Daenyth

อาจเป็นเพราะผู้ถามถามlsและคุณใช้find;) ฉัน
อัปเด

2
หากคุณใช้ "find. -not -empty -ls" มันจะรวมไดเรกทอรีปัจจุบัน (เช่น "." ในผลลัพธ์ของมัน) เพื่อรวมไฟล์ปัจจุบันที่ใช้ "find. -type f -not -empty -ls"
672009

19

นี่คืองานหา ls ไม่ทรงพลังเพียงพอ

find -maxdepth 1 -size +0 -print

-maxdepth 1 - สิ่งนี้บอกให้ค้นหาการค้นหา dir ปัจจุบันเท่านั้นเอาออกเพื่อดูใน dirs ย่อยทั้งหมดหรือเปลี่ยนหมายเลขเพื่อลง 2, 3 หรือมากกว่าระดับ

-size +0สิ่งนี้บอกให้ค้นหาไฟล์ที่มีขนาดใหญ่กว่า0ไบต์ 0สามารถเปลี่ยนเป็นขนาดใดก็ได้ที่คุณต้องการ

-print บอก find เพื่อพิมพ์พา ธ แบบเต็มไปยังไฟล์ที่พบ

แก้ไข: การ
เพิ่มล่าช้า: คุณควรเพิ่ม-type fสวิตช์ด้านบนด้วย ส่วนนี้บอกให้ find เพื่อค้นหาไฟล์เท่านั้น และตามที่ระบุไว้ในความคิดเห็นด้านล่าง-printสวิตช์ไม่จำเป็นจริงๆ


1
เพื่อหลีกเลี่ยงการเตือนคุณควรวางก่อน-maxdepth 1 -size +0นอกจากนี้-printคือการกระทำเริ่มต้นดังนั้นจึงไม่จำเป็นต้องใช้
cYrus

@cYrus - ไม่มีคำเตือนสำหรับฉัน (cygwin)
Nifle

การใช้งานของความfindแตกต่างกันมากในแง่ของตัวเลือกที่ถูกต้องคืออะไรและไปที่ไหน GNU find(ซึ่งเป็นเรื่องธรรมดามาก ๆ ) จะผลิตเตือนถ้าคุณใส่ก่อน-size -maxdepth
Telemachus


8
ls -l | awk '{if ($5 != 0) print $9}'

หากคุณมีความตั้งใจในการใช้lsที่คุณต้องการความช่วยเหลือเล็ก ๆ น้อย ๆ awkจาก


7

Ls แทบไม่มีตัวเลือกในการกรองไฟล์: นั่นไม่ใช่งานของมัน การกรองไฟล์เป็นงานของเชลล์สำหรับกรณีง่าย ๆ (ผ่านการวนรอบ) และงานการค้นหาสำหรับเคสที่ซับซ้อน

ใน zsh คุณสามารถตัวระบุแบบLวงกลมเพื่อเก็บเฉพาะไฟล์ที่มีขนาดคือ> 0 (ตัวระบุ.จะ จำกัด เฉพาะไฟล์ทั่วไป):

ls *(.L+0)

ผู้ใช้เชลล์อื่น ๆ ต้องใช้การค้นหา ด้วย GNU find (ตามที่พบส่วนใหญ่บน Linux):

find -maxdepth 1 -type f ! -empty -exec ls {} +

วิธีที่เป็นไปตาม POSIX คือ:

find . -type f -size +0c -exec ls {} + -o -name . -o -prune

ถ้าไม่ได้เป็นเพียงตัวอย่างและคุณเพียงตั้งใจตรวจสอบภาพคุณสามารถจัดเรียงตามขนาดlsls -S


3
 $ find /* -type f ! -size 0

จะทำงานได้ดีขึ้นหากคุณต้องการไฟล์ที่ไม่ว่างเปล่าทั้งหมดแทนที่จะเป็นเพียงไดเรกทอรี


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