วิธีค้นหาไดเรกทอรีที่ใหญ่ที่สุดหรือไฟล์ที่ใหญ่ที่สุด [ซ้ำ]


33

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

ภายใต้ Linux ฉันกำลังมองหาคำสั่งเพื่อแสดงรายการไฟล์ที่ใหญ่ที่สุดและ / หรือไดเรกทอรีที่ใหญ่ที่สุดภายใต้ไดเรกทอรี


เครื่องมือที่มีประโยชน์ที่สุดที่ฉันพบคือ xdiskusage ( xdiskusage.sourceforge.net ) สิ่งนี้แสดงให้เห็นว่าไฟล์อยู่ในขนาดใด เครื่องมือที่ยอดเยี่ยม! (และใช้งานได้โดยตรงกับ X11)
jcoppens

คำถามนี้ซ้ำกับคำถามที่ถูกปิดเป็นหัวข้ออย่างไร ไม่สมเหตุสมผล
kenorb

คำตอบ:


17

จากไดเรกทอรีใด ๆ :

du -a | sort -n -r


1
สิ่งนี้แสดงให้เห็นไฟล์แต่ละไฟล์ แต่คำถามก็เกี่ยวกับไดเรกทอรีเช่นกัน
Knocte

du โดยไม่มีข้อสรุปสรุปการใช้งานดิสก์โดยไดเรกทอรี du กับ -a สร้างข้อมูลไดเรกทอรีเดียวกันและรวมถึงการใช้ดิสก์สำหรับแต่ละไฟล์เช่นกัน
เบรนต์ Worden

ไม่สามารถเรียกใช้การเรียงลำดับเมื่อคุณไม่มีที่ว่าง: = (
Jonathan Henson

28

คำสั่งดังต่อไปนี้จะแสดงไดเรกทอรีหนึ่งระดับและขนาดของไดเรกทอรีเหล่านั้น

du --max-depth = 1 / เส้นทาง | sort -r -k1,1n

หากหนึ่งในนั้นติดกันจริง ๆ (อันสุดท้ายในรายการนั้นใหญ่ที่สุดเนื่องจากsort -r) คุณจะเรียกใช้คำสั่งบนไดเรกทอรีนั้นอีกครั้งแล้วดำเนินการต่อไปจนกว่าคุณจะพบไดเรกทอรี / ไฟล์ที่ละเมิด

หากสิ่งที่คุณต้องการคือไฟล์ที่ใหญ่ที่สุดสิบไฟล์

ค้นหา / home -type f -exec du -s {} \; | sort -r -k1,1n | หัว


ตัวเลขที่มากที่สุดจะปรากฏที่ด้านล่างสำหรับฉันไม่ว่าจะเพิ่มsort -rหรือไม่ก็ตาม มีวิธีการรับหมายเลขสูงสุดที่ด้านบนหรือไม่
squarecandy

คุณต้องระบุเพื่อเรียงลำดับคอลัมน์ที่คุณต้องการเรียงลำดับและเป็นตัวเลข (ไม่ใช่ตัวอักษรและตัวเลข) นั่นคือสิ่งที่ -k1,1rn จะทำ โดยการเรียงลำดับเริ่มต้นจะใช้การเรียงลำดับตัวอักษรและตัวเลขในคอลัมน์แรก
Marcin

ใช่มันเรียงลำดับอย่างถูกต้องกับที่ แต่มันเป็นในลำดับต่ำถึงตัวเลขที่สูงไม่ว่าถ้าฉันรวมหรือsort sort -rฉันเข้าใจผิดว่า -r ทำงานอย่างไร ฉันเดาว่ามันไม่ใช่เรื่องใหญ่ ตัวอย่างของคุณมีประโยชน์มากและให้ข้อมูลที่ฉันต้องการ
squarecandy

2
ด้วยsortI have ( sort (GNU coreutils) 8.13ใน Ubuntu 12.04.3) ตัวเลือก-rจะไม่ทำงานหาก-nตามมาทันที-k( -k1,1n) ตัวเลือกลำดับนี้ใช้งานได้: sort -rnk1,1.
pabouk

27

ยูทิลิตีที่เรียกว่าncduจะให้ข้อมูลที่คุณต้องการ

sudo apt-get install ncdu

บน OS X สามารถติดตั้งได้โดยใช้ Homebrew:

brew install ncdu

2
+1 ฉันไม่เคยได้ยินเรื่องนี้มาก่อน - ใช้งานได้ดีบน Mac เช่นกัน
Andrew E

นี่เป็นคำตอบที่ดีกว่าทั้งคำตอบที่สูงกว่า
AlexLordThorsen

นี่คือเหลือเชื่อ แนะนำสิ่งนี้เหนือคำตอบอื่น ๆ ทั้งหมด!
Allen Gingrich

4

du -sk * | เรียงลำดับ -nr | หัว -1

นี่จะแสดงไดเรกทอรี / ไฟล์ที่ใหญ่ที่สุดในไดเรกทอรีเป็น KB การเปลี่ยนค่าส่วนหัวจะส่งผลให้ไฟล์ / ไดเรกทอรีบนสุด



2

คำสั่งต่อไปนี้จะส่งคืนไฟล์ที่ใหญ่ที่สุด 10 อันดับแรก /path

du -a -h / path | sort -h -r | หัว -n 10

ฉันชอบที่จะใช้-hตัวเลือกสำหรับการอ่าน ทั้งสองduและจำเป็นต้องมีsort-h




0

ลองใช้หนึ่งซับต่อไปนี้ (แสดงไฟล์ที่ใหญ่ที่สุด 20 อันดับแรกในไดเรกทอรีปัจจุบัน):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

หรือขนาดที่มนุษย์อ่านได้:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

คำสั่งที่สองในการทำงานใน OSX / BSD ถูกต้อง (ตามsortไม่ได้-h), คุณจำเป็นต้องติดตั้งจากsortcoreutils

ดังนั้นชื่อแทนเหล่านี้มีประโยชน์ที่จะมีในไฟล์rcของคุณ(ทุกครั้งเมื่อคุณต้องการ):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

-5
du -sh /path * | sort -nr | grep G

G สำหรับ GIG (เพื่อกำจัดไฟล์เล็กลง) ไฟล์ / ไดเรกทอรี


รายการนี้แสดงไฟล์และโฟลเดอร์ทั้งหมดโดยแสดงขนาด มันไม่ได้จัดเรียงขนาดตามจำนวนไบต์ของ K, M หรือ G ยกเว้นว่าคุณจะพิมพ์ตามที่คุณแสดง
Canadian Luke ติดตั้งใหม่ MONICA

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