ฉันกำลังมองหาโปรแกรมที่จะแสดงให้ฉันเห็นว่าไฟล์ / ไดเร็กตอรี่ใดที่ใช้พื้นที่มากที่สุด, เช่น:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
ฉันรู้ว่าเป็นไปได้ใน KDE3 แต่ฉันไม่อยากทำ - KDE4 หรือบรรทัดคำสั่งเป็นที่ต้องการ
ฉันกำลังมองหาโปรแกรมที่จะแสดงให้ฉันเห็นว่าไฟล์ / ไดเร็กตอรี่ใดที่ใช้พื้นที่มากที่สุด, เช่น:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
ฉันรู้ว่าเป็นไปได้ใน KDE3 แต่ฉันไม่อยากทำ - KDE4 หรือบรรทัดคำสั่งเป็นที่ต้องการ
คำตอบ:
วิธีค้นหา 10 ไฟล์ที่ใหญ่ที่สุด (linux / bash):
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}
วิธีค้นหา 10 ไดเรกทอรีที่ใหญ่ที่สุด:
find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}
เพียง -type {d:f}
แต่แตกต่างคือ
จัดการไฟล์ที่มีช่องว่างในชื่อและสร้างขนาดไฟล์ที่มนุษย์สามารถอ่านได้ในเอาต์พุต ไฟล์ที่ใหญ่ที่สุดที่ระบุไว้ล่าสุด อาร์กิวเมนต์ที่จะตามมาคือจำนวนผลลัพธ์ที่คุณเห็น (นี่คือ 10 ข้อที่ใหญ่ที่สุด)
มีสองเทคนิคที่ใช้จัดการช่องว่างในชื่อไฟล์ การfind -print0 | xargs -0
ใช้ตัวคั่น null แทนช่องว่างและที่สองxargs -I{}
ใช้ขึ้นบรรทัดใหม่แทนช่องว่างเพื่อยุติรายการอินพุต
ตัวอย่าง:
$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}
76M ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
76M ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
76M ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
76M ./tmp/projects/onthisday/onthisday.tar.gz
114M ./Dropbox/snapshots/weekly.tgz
114M ./Dropbox/snapshots/daily.tgz
114M ./Dropbox/snapshots/monthly.tgz
117M ./Calibre Library/Robert Martin/cc.mobi
159M ./.local/share/Trash/files/funky chicken.mpg
346M ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}
(ใช้sort -nr | head -10
แทนsort -n | tail -10
)
ncdu
ฉันมักจะใช้ มันโต้ตอบและเร็วมาก
ncdu
--- มันเหมือนกับhtop
พื้นที่ดิสก์ สุดยอดประโยชน์!
[t] [g] [g]
ที่นี่เป็นลำดับที่สำคัญที่คุณอาจจะพิมพ์ทุกครั้งที่คุณเรียกมันหากคุณต้องการเห็นไฟล์และโฟลเดอร์ที่ปะปนกันและสถิติร้อยละญาติ:
สำหรับมุมมองด่วน:
du | sort -n
รายการไดเรกทอรีทั้งหมดที่ใหญ่ที่สุดล่าสุด
du --max-depth=1 * | sort -n
หรืออีกครั้งหลีกเลี่ยงการซ้ำซ้อน *:
du --max-depth=1 | sort -n
แสดงรายการไดเรกทอรีทั้งหมดในไดเรกทอรีปัจจุบันด้วยไดเรกทอรีที่ใหญ่ที่สุด
(ต้องใช้พารามิเตอร์ -n ในการเรียงลำดับเพื่อให้เขตข้อมูลแรกถูกเรียงลำดับเป็นตัวเลขแทนที่จะเป็นข้อความ แต่สิ่งนี้จะ จำกัด การใช้พารามิเตอร์ -h เพื่อ du ตามที่เราต้องการจำนวนที่สำคัญสำหรับการเรียงลำดับ)
พารามิเตอร์อื่น ๆ สำหรับคุณสามารถใช้งานได้หากคุณต้องการติดตามลิงก์สัญลักษณ์ (ค่าเริ่มต้นคือไม่ติดตามลิงก์สัญลักษณ์) หรือเพียงแสดงขนาดของเนื้อหาไดเรกทอรีที่ไม่รวมไดเรกทอรีย่อยตัวอย่างเช่น คุณสามารถรวมไว้ในรายการวันที่และเวลาเมื่อมีการเปลี่ยนแปลงไฟล์ในไดเรกทอรีล่าสุด
find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0
- นิด ๆ หน่อย ๆ
สำหรับสิ่งที่มากที่สุดที่ฉันชอบเครื่องมือ CLI แต่สำหรับการใช้งานไดรฟ์ผมชอบfilelight งานนำเสนอเป็นเรื่องง่ายสำหรับฉันมากกว่าเครื่องมือการจัดการพื้นที่อื่น ๆ ที่ฉันเคยเห็น
Filelight ดีกว่าสำหรับผู้ใช้ KDE แต่เพื่อความสมบูรณ์ (ชื่อคำถามเป็นเรื่องทั่วไป) ฉันต้องพูดถึงBaobabรวมอยู่ใน Ubuntu, aka การวิเคราะห์การใช้งานดิสก์:
เครื่องมือ GUI KDirStatแสดงข้อมูลทั้งในรูปแบบตารางและแบบกราฟิก คุณสามารถเห็นได้อย่างรวดเร็วจริงๆว่ามีการใช้พื้นที่ส่วนใหญ่อย่างไร
ฉันไม่แน่ใจว่านี่เป็นเครื่องมือ KDE ที่คุณไม่ต้องการหรือไม่ แต่ฉันคิดว่ามันควรจะกล่าวถึงในคำถามเช่นนี้ เป็นเรื่องที่ดีและหลายคนอาจไม่รู้ - ฉันเพิ่งเรียนรู้เกี่ยวกับมันเมื่อเร็ว ๆ นี้เอง
ncdu
แทน
การรวมกันเป็นเคล็ดลับที่ดีที่สุดใน Unix
du -sk $(find . -type d) | sort -n -k 1
จะแสดงขนาดไดเรกทอรีเป็น KB และเรียงลำดับเพื่อให้ใหญ่ที่สุดในตอนท้าย
มุมมองแบบต้นไม้จะต้องการอะไรมากกว่านี้ ... มันจำเป็นจริงๆหรือ?
โปรดทราบว่าการสแกนนี้ซ้อนอยู่ในไดเรกทอรีดังนั้นมันจะนับไดเรกทอรีย่อยอีกครั้งสำหรับไดเรกทอรีที่สูงขึ้นและไดเรกทอรีฐาน.
จะปรากฏขึ้นในตอนท้ายเป็นผลรวมการใช้ประโยชน์ทั้งหมด
อย่างไรก็ตามคุณสามารถใช้การควบคุมความลึกในการค้นหาเพื่อค้นหาที่ความลึกที่เฉพาะเจาะจง
และมีส่วนร่วมกับการสแกนของคุณมากขึ้น ... ขึ้นอยู่กับสิ่งที่คุณต้องการ การควบคุมความลึกของfind
ด้วย-maxdepth
และ-mindepth
สามารถ จำกัด ความลึกของไดเรกทอรีย่อยเฉพาะ
นี่คือรูปแบบที่ละเอียดอ่อนสำหรับปัญหาหาเรื่องของคุณนานเกินไป
find . -type d -exec du -sk {} \; | sort -n -k 1
ผมชอบGT5 คุณสามารถสำรวจแผนผังและเปิดไดเรกทอรีย่อยเพื่อดูรายละเอียดเพิ่มเติม มันใช้เว็บเบราว์เซอร์โหมดข้อความเช่น lynx เพื่อแสดงผลลัพธ์ ติดตั้งelinksเพื่อผลลัพธ์ที่ดีที่สุด
แม้ว่าจะไม่ได้ให้ผลลัพธ์ที่ซ้อนกันเช่นนั้นให้ลอง du
du -h /path/to/dir/
การเรียกใช้ในโฟลเดอร์เอกสารของฉันจะทำให้เกิดสิ่งต่อไปนี้:
josh-hunts-macbook:Documents joshhunt$ du -h
0B ./Adobe Scripts
0B ./Colloquy Transcripts
23M ./Electronic Arts/The Sims 3/Custom Music
0B ./Electronic Arts/The Sims 3/InstalledWorlds
364K ./Electronic Arts/The Sims 3/Library
77M ./Electronic Arts/The Sims 3/Recorded Videos
101M ./Electronic Arts/The Sims 3/Saves
40M ./Electronic Arts/The Sims 3/Screenshots
1.6M ./Electronic Arts/The Sims 3/Thumbnails
387M ./Electronic Arts/The Sims 3
387M ./Electronic Arts
984K ./English Advanced/Documents
1.8M ./English Advanced
0B ./English Extension/Documents
212K ./English Extension
100K ./English Tutoring
5.6M ./IPT/Multimedia Assessment Task
720K ./IPT/Transaction Processing Systems
8.6M ./IPT
1.5M ./Job
432K ./Legal Studies/Crime
8.0K ./Legal Studies/Documents
144K ./Legal Studies/Family/PDFs
692K ./Legal Studies/Family
1.1M ./Legal Studies
380K ./Maths/Assessment Task 1
388K ./Maths
[...]
จากนั้นคุณสามารถเรียงลำดับผลลัพธ์ได้โดยการส่งผ่านไปยัง sort
du /path/to/dir | sort -n
นี่คือสคริปต์ที่ทำเพื่อคุณโดยอัตโนมัติ
http://www.thegeekscope.com/linux-script-to-find-largest-files/
ต่อไปนี้เป็นผลลัพธ์ตัวอย่างของสคริปต์:
**# sh get_largest_files.sh / 5**
[SIZE (BYTES)] [% OF DISK] [OWNER] [LAST MODIFIED ON] [FILE]
56421808 0% root 2012-08-02 14:58:51 /usr/lib/locale/locale-archive
32464076 0% root 2008-09-18 18:06:28 /usr/lib/libgcj.so.7rh.0.0
29147136 0% root 2012-08-02 15:17:40 /var/lib/rpm/Packages
20278904 0% root 2008-12-09 13:57:01 /usr/lib/xulrunner-1.9/libxul.so
16001944 0% root 2012-08-02 15:02:36 /etc/selinux/targeted/modules/active/base.linked
Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes [ 0% of Total Disc Space ]
*** Note: 0% represents less than 1% ***
คุณอาจพบว่าสคริปต์นี้มีประโยชน์และมีประโยชน์มาก!
แม้ว่าการค้นหาเปอร์เซ็นต์การใช้งานดิสก์ของแต่ละไฟล์ / ไดเรกทอรีจะเป็นประโยชน์ แต่ส่วนใหญ่แล้วการรู้จักไฟล์ / ไดเรกทอรีที่ใหญ่ที่สุดในดิสก์ก็เพียงพอแล้ว
ดังนั้นสิ่งที่ฉันชอบคือ:
# du -a | sort -n -r | head -n 20
และผลลัพธ์ก็เป็นเช่นนี้:
28626644 .
28052128 ./www
28044812 ./www/vhosts
28017860 ./www/vhosts/example.com
23317776 ./www/vhosts/example.com/httpdocs
23295012 ./www/vhosts/example.com/httpdocs/myfolder
23271868 ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576 ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700 ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748 ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852 ./www/vhosts/example.com/stats
4479728 ./www/vhosts/example.com/stats/logs
4437900 ./www/vhosts/example.com/stats/logs/access_log.processed
401848 ./lib
323432 ./lib/mysql
246828 ./lib/mysql/mydatabase
215680 ./www/vhosts/example.com/stats/webstat
182364 ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304 ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144 ./www/vhosts/example.com/httpdocs/tmp/ccc.sql
วิธีค้นหาไฟล์ 25 อันดับแรกในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย:
find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25
จะส่งออกไฟล์ 25 อันดับแรกโดยการเรียงลำดับตามขนาดของไฟล์ผ่านคำสั่ง piped "sort -nr -k5"
อีกทางเลือกหนึ่งคือมีอายุที่แบ่งพื้นที่ดิสก์ตามเวลาการเข้าถึงล่าสุดซึ่งทำให้ง่ายต่อการค้นหาไฟล์ที่เสียพื้นที่
มันยังทำงานบนเซิร์ฟเวอร์ที่ไม่มี X Windows ด้วยการให้บริการหน้าเว็บชั่วคราวเพื่อให้สามารถวิเคราะห์การใช้งานจากระยะไกลด้วยกราฟ สมมติว่าที่อยู่ IP ของเซิร์ฟเวอร์คือ 192.168.1.101 คุณสามารถพิมพ์สิ่งนี้บนบรรทัดคำสั่งของเซิร์ฟเวอร์
agedu -s / -w --address 192.168.1.101:60870 --auth basic -R
สิ่งนี้จะพิมพ์ชื่อผู้ใช้รหัสผ่านและ URL ที่คุณสามารถเข้าถึง "GUI" และเรียกดูผลลัพธ์ เมื่อเสร็จแล้วยุติagedu
ด้วยCtrl+D
บนเซิร์ฟเวอร์
du -chs /*
จะแสดงรายการของไดเรกทอรีราก
ให้เสร็จสมบูรณ์รายการนิด ๆ หน่อย ๆ xdiskusage
ผมเพิ่มวิเคราะห์การใช้ดิสก์ที่ชื่นชอบของฉันซึ่งเป็น
GUI จำฉันเกี่ยวกับยูทิลิตี้ ol อื่น ๆ ที่ดีของมันได้อย่างรวดเร็วและไม่บวม แต่คุณสามารถนำทางได้อย่างง่ายดายในลำดับชั้นและมีตัวเลือกการแสดงผล:
$ xdiskusage /usr
ลองใช้หนึ่งซับต่อไปนี้ (แสดงไฟล์ที่ใหญ่ที่สุด 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
), คุณจำเป็นต้องติดตั้งจากsort
coreutils
ดังนั้นชื่อแทนเหล่านี้มีประโยชน์ที่จะมีในไฟล์rcของคุณ(ทุกครั้งเมื่อคุณต้องการ):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'