แสดงขนาดไดเรกทอรีย่อยแต่ละรายการในรูปแบบรายการโดยใช้คำสั่งหนึ่งบรรทัดใน Bash หรือไม่


100

ls -lฉันต้องการที่จะได้รับรายชื่อของไดเรกทอรีและขนาดของพวกเขาในรูปแบบรายการเช่นวิธีการที่คุณได้รับเมื่อคุณทำ

สิ่งนั้นคือมีคำสั่งหนึ่งบรรทัดที่สามารถทำได้? ฉันเห็นคนอื่น ๆ มีคำสั่งยาว ๆ แค่เอาท์พุทนี้ นั่นยาวเกินไป

คำสั่งใดที่สามารถทำสิ่งนี้หรือการรวมกันของคำสั่งที่สามารถพิมพ์ได้อย่างง่ายดาย? du -hให้ แต่แสดงโฟลเดอร์ย่อยทั้งหมดซึ่งไม่ใช่สิ่งที่ฉันต้องการ เพียงโฟลเดอร์ไดเรกทอรีปัจจุบัน

คำตอบ:


71

คุณอาจต้องการดูไดเรกทอรีเรียงตามขนาด:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

สิ่งนี้ไม่ทำงานหากมีรายการจำนวนมากในไดเรกทอรี bash: /run/current-system/sw/bin/du: Argument list too long
Chris Stryczynski

123

ลองสิ่งนี้

du -h --max-depth=1

เอาท์พุต

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

ทางเลือก

หาก--max-depth=1ยาวเกินไปสำหรับรสนิยมของคุณคุณสามารถลองใช้:

du -h -s *

นี่ใช้-s( --summarize) และจะพิมพ์ขนาดของโฟลเดอร์เองตามค่าเริ่มต้น โดยการส่งองค์ประกอบทั้งหมดในไดเรกทอรีการทำงานปัจจุบัน ( *) จะสร้างผลลัพธ์ที่คล้ายกัน--max-depth=1ดังนี้:

เอาท์พุต

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

ความแตกต่างนั้นลึกซึ้ง วิธีการก่อนหน้านี้จะแสดงขนาดรวมของไดเรกทอรีการทำงานปัจจุบันและขนาดรวมของโฟลเดอร์ทั้งหมดที่อยู่ในนั้น ... แต่มีความลึกสูงสุด 1 เท่านั้น

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


4
คำตอบที่สมบูรณ์แบบ ใน Mac OSX --depthพารามิเตอร์ไม่ได้รับการยอมรับ ใช้du -h -d 1สำหรับผลลัพธ์เดียวกัน
Dylan

6

พิมพ์ขนาดของโฟลเดอร์ไฟล์ทั้งหมดและไฟล์ที่ซ่อนอยู่ในดิสก์:

el@dev /home/el $ du -sh `ls -a`
258M    .
265M    ..
4.0K    .classpath
258M    .git
4.0K    .gitignore
9.0K    nbactions.xml
12K     README
20K     .README.swp
4.0K    run.sh
23K    XmlPostPropagate.php


2

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

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

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