แสดงขนาดโฟลเดอร์ของโฟลเดอร์ปัจจุบันด้วยเทอร์มินัล


134

ฉันต้องการรายการโฟลเดอร์จากไดเรกทอรีปัจจุบันหรือที่ฉันระบุด้วยขนาด

ฉันได้ลองกับ du แต่ฉันได้รับขนาดของไดเรกทอรีที่ฉันระบุเท่านั้น (du. ./f1) และ ls ไม่แสดงขนาดของโฟลเดอร์

ฉันจะทำสิ่งนี้โดยไม่มีสคริปต์ได้อย่างไร


ไม่ฟังเหมือนกระตุก แต่ 'man du';)
Jakub

5
ขอบคุณ ;-) แต่ฉันได้ลองแล้วและไม่พบอะไรเลย และลอง Googling du!
วิน

คำตอบ:


212

หากคุณต้องการแสดงไดเรกทอรีทั้งหมดในไดเรกทอรีปัจจุบัน:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

หากต้องการแสดงพวกเขาเริ่มต้นจากไดเรกทอรีอื่น:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

หากคุณต้องการให้แน่ใจว่าไดเรกทอรีที่มีชื่อขึ้นต้นด้วยจุดรวมอยู่ให้ทำshopt -s dotglobก่อน


ขอบคุณคำตอบที่ดีทั้งหมด แต่อันนี้เป็นคำตอบที่ง่ายที่สุด ฉันลืมตอนจบ / ในการทดสอบ
วิน

1
โดยที่ -s หมายถึงสรุปให้แสดงผลรวมและ -h หมายถึงมนุษย์สามารถอ่านได้
wranvaud

2
จัดเรียงโฟลเดอร์ตามขนาด: du -s */ | sort -n.
Anton Tarasenko


1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson

18

สำหรับ Mac ตัวเลือก --max-depth ถูกแทนที่ด้วย -d [depth] ดังนั้นหากต้องการดูรายการไดรฟ์รากของคุณที่มนุษย์สามารถอ่านได้รวมถึง 2 ระดับให้ใช้สิ่งต่อไปนี้:

du -hd 2 /* 

หมายเหตุ: คำสั่งนี้จะเปิดเผยระดับไดเรกทอรีสองอันดับแรกนอกรูทของคุณ ซึ่งรวมถึงการสำรวจหนึ่งระดับในไดรฟ์ข้อมูลของคุณและจะแสดงรายการขนาดสรุปของแต่ละไดเรกทอรีระดับบนสุดในแต่ละไดรฟ์ข้อมูลที่คุณแนบ คำสั่งนี้อาจใช้เวลานานกว่าจะเสร็จสมบูรณ์ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณแนบ


13

aproach อื่นคือตัวเลือก --max-depth

du -h --max-depth=1 .

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

ความลึก 2 จะแสดงรายการโฟลเดอร์อีกระดับหนึ่ง


4
สำหรับ Mac มันมีdu -hd 2 .ความลึก 2 ระดับ
Ryan

อ่าใช่ และอาจเป็น FreeBSD เช่นกัน ขอบคุณสำหรับข้อมูล.
matthias krull


2

$ du --max-depth=1 /var/www/ | sort -n -r


3
เมื่อเพิ่มคำตอบให้กับคำถามเก่าด้วยคำตอบที่มีอยู่เป็นแนวปฏิบัติที่ดีในการอธิบายว่าคำตอบของคุณแตกต่างกันอย่างไรและรวมคำอธิบายไว้ด้วย
Jason Aller

3
คุณสามารถขยายคำตอบของคุณเพื่ออธิบายว่าพารามิเตอร์ทำอะไรได้บ้าง
fixer1234

2

ควรกล่าวถึงคำสั่งเชลล์การใช้ดิสก์ NCurses

Ncdu เป็นเครื่องมือวิเคราะห์การใช้ดิสก์ที่มีส่วนต่อประสาน ncurses มันถูกออกแบบมาเพื่อค้นหา space hogs บนเซิร์ฟเวอร์ระยะไกลที่คุณไม่มีการตั้งค่ากราฟิกทั้งหมด แต่ก็เป็นเครื่องมือที่มีประโยชน์แม้ในระบบเดสก์ทอปปกติ Ncdu มุ่งหวังที่จะรวดเร็วใช้งานง่ายและใช้งานง่ายและควรจะสามารถทำงานในสภาพแวดล้อมแบบ POSIX ที่น้อยที่สุดเมื่อติดตั้ง ncurses


2

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

$ du -sh */ | sort -rn

1

สำหรับ Mac คุณสามารถติดตั้งการนำ GNU (Linux) ไปใช้duกับ Homebrew ( brew install coreutils) ตัวอย่างเช่น:

gdu folder -shL --exclude=.git

ที่ไหน

  • gduเป็นชื่อที่กำหนดให้กับการนำ GNU ไปใช้du(โดยค่าเริ่มต้น Homebrew ไม่ได้ซ่อน/usr/bin/du);
  • s สร้างผลรวมทั้งหมดสำหรับโฟลเดอร์ที่ระบุ (ละเว้นหากคุณต้องการดูรายละเอียด);
  • h ขนาดเอาต์พุตที่มนุษย์อ่านได้;
  • L ติดตาม symlink;
  • --exclude=.git แยกไดเรกทอรี git ภายในโฟลเดอร์ที่ระบุ (นี่เป็นเพียงตัวอย่าง)

--exclude=blahคุณสามารถละเว้นโฟลเดอร์ขึ้นโดยการเพิ่ม นอกจากนี้คุณยังสามารถระบุโฟลเดอร์หลายครั้ง (เช่นgdu folder1 folder2 ...) cและในกรณีที่คุณสามารถรวมผลรวมย่อยทั้งหมดเป็นขนาดเดียวโดยใช้ตัวเลือก


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