จะค้นหาไดเรกทอรีหรือไฟล์ที่ใช้พื้นที่มากได้อย่างไร?


11

ดิสก์ของฉันมีพื้นที่เหลืออยู่:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

ฉันต้องการผ่านโฮมไดเร็กตอรี่ทั้งหมดและค้นหาไดเรกทอรีหรือไฟล์ที่ใช้พื้นที่มากที่สุด 10 อันดับเพื่อตัดสินใจว่าใครจะถูกลบออก

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

มีวิธีที่ดีในการทำเช่นนี้?

คำตอบ:


5

หากคุณสามารถใช้ GUI ลองBaobab นี่คือเครื่องมือกราฟิกสำหรับวิเคราะห์การใช้พื้นที่ว่างบนฮาร์ดดิสก์


10

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

คุณจะต้องดำน้ำแบบนี้ซ้ำ แต่มันก็เป็นวิธีที่ง่ายที่จะทำ


9

ใช้คำสั่งนี้:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

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

หากคุณต้องการวิเคราะห์/homeเฉพาะ - คุณสามารถระบุสิ่งนี้ในคำสั่งเช่นนี้:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

มันจะมีลักษณะเช่นนั้น: ป้อนคำอธิบายรูปภาพที่นี่

ที่นำมาจากที่นี่


9

du | เรียง -rn | ศีรษะ

  • du = การใช้งานดิสก์
  • จัดเรียงโดยใช้ลำดับตัวเลขย้อนกลับ
  • สิบบรรทัดแรก

4

+1 สำหรับ Baobab บนบรรทัดคำสั่งฉันมักจะใช้du -hcsx *หรือdu -hcsx * | sort -h(ต้องมีเวอร์ชันล่าสุดของความล้มเหลวsort) จากนั้นตรวจสอบไดเรกทอรีย่อยเมื่อฉันดำเนินการต่อ

นอกจากนี้ยังmcมีคุณสมบัติในการคำนวณขนาดไดเรกทอรีย่อยโดยกดCtrl+ Spaceที่ด้านบนของมัน (กดCtrl+ Spaceที่ด้านบน..เพื่อทำให้คำนวณขนาดของไดเรกทอรีย่อยทั้งหมดจากนั้นคุณสามารถเลือกเรียงลำดับตามขนาดในเมนู


2
บนบรรทัดคำสั่งคุณควรลอง ncdu มันเป็นเรื่องที่น่าสนใจ
Rob


0

อีกหนึ่งรายการโปรดของ GUI: kdirstat

มันมีความสามารถในการเจาะลึกที่ดีและเมนูเครื่องมือ (ที่ขยายได้) เพื่อช่วยคุณลบ / บีบอัดไฟล์ของคุณ

ฉันยังมีสคริปต์บรรทัดคำสั่งที่ฉันเรียกว่าdir_usageที่ฉันอัปโหลดไปยัง pastebin


-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

commandline ข้างต้นทำสิ่งต่อไปนี้ (เรียงตามลำดับ):

  • ค้นหาไฟล์ทั้งหมด (ไม่ใช่ไดเรกทอรี) ภายในโฟลเดอร์ปัจจุบัน
  • แสดงการใช้งานสำหรับแต่ละรายการ
  • จัดเรียงผลลัพธ์เป็นตัวเลข
  • ใช้เฉพาะ 10 บรรทัดสุดท้าย (การใช้งานสูงสุด)
  • ตัดออก 10 ชื่อไฟล์ (คอลัมน์แรกคือการใช้งานที่สองคือชื่อไฟล์)
  • แสดงการใช้งานสำหรับแต่ละชื่อไฟล์ (ในรูปแบบมนุษย์)

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


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