ฉันจะจัดเรียงไฟล์ทั้งหมดตามขนาดในไดเรกทอรีได้อย่างไร?


48

ฉันจะแสดงไฟล์ในไดเรกทอรี unix ที่เรียงตามขนาดที่มนุษย์สามารถอ่านได้จากใหญ่ไปหาน้อยที่สุดได้อย่างไร

ฉันเหนื่อย

du -h | sort -V -k 1 

แต่ดูเหมือนจะไม่ทำงาน


คุณช่วยอธิบายได้ไหมถ้าคุณคาดหวังว่าขนาดไดเรกทอรีย่อยจะปรากฏในผลลัพธ์เช่นกันและหากคุณกำลังมองหาขนาดที่ชัดเจนของไฟล์หรือขนาดที่แท้จริงที่พวกเขาใช้บนดิสก์
jlliagre

คำตอบ:


53

ls(1) /sort:

-S     sort by file size

1
-Sไม่มีอาร์กิวเมนต์การเรียงลำดับที่ถูกต้องอย่างน้อยใน Ubuntu อีกต่อไป คำตอบด้านล่างโดย @alex ทำงานสำหรับฉัน การเชื่อมโยงคำตอบคือsuperuser.com/a/990437/528836
Prasanna


16

หากคุณมีsortรุ่นที่เหมาะสมคุณสามารถใช้:

du -h | sort -rh

ของฉันคือ

$ sort --version
sort (GNU coreutils) 8.12

4

ls -Sไม่ใช่ตัวเลือกสำหรับ OS สำหรับฉัน การทำงานต่อไปนี้:
ls -l | sort -k 5nr
พวกเขา "สำคัญ" คือการระบุคอลัมน์ที่จะเรียงลำดับ (รับมันว่า "กุญแจ") ด้านบนฉันระบุการเรียงลำดับ-k 5nrความหมายในคอลัมน์ที่ 5 ซึ่งมีขนาด (5) ประเมินว่าเป็นตัวเลข (n) ตามลำดับจากมากไปน้อย (n)

เอกสารอ้างอิงเรียงลำดับสำหรับข้อมูลเพิ่มเติม


4

du -ha | sort -h

du : ประมาณการการใช้งานดิสก์ไฟล์

-h : for human
-a : all files

sort : เรียงลำดับบรรทัดข้อความ

-h : for human

man du; man sortมากขึ้น มันใช้งานได้สำหรับฉันบน Ubuntu v15


1

ฉันได้รับสิ่งนี้เพื่อฉัน:

ls -l | sort -g -k 5 -r

ซึ่ง (ฉันเพิ่งคิดออก) เป็นเช่นเดียวกับ:

ls -lS

0

ซึ่งแตกต่างจากls -Sนี้จะจัดการกับไฟล์ที่กระจัดกระจาย:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.