ยูทิลิตี้ Linux สำหรับการค้นหาไฟล์ / ไดเรกทอรีที่ใหญ่ที่สุด [ปิด]


134

ฉันกำลังมองหาโปรแกรมที่จะแสดงให้ฉันเห็นว่าไฟล์ / ไดเร็กตอรี่ใดที่ใช้พื้นที่มากที่สุด, เช่น:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

ฉันรู้ว่าเป็นไปได้ใน KDE3 แต่ฉันไม่อยากทำ - KDE4 หรือบรรทัดคำสั่งเป็นที่ต้องการ


สำหรับผู้ใช้ mac ฉันแค่อยากจะแนะนำซอฟต์แวร์ฟรีนี้ชื่อว่า Disk Inventory X ดาวน์โหลดได้ที่นี่derlien.comมันใช้ง่ายสำหรับ mac osx
Nimitack

คำตอบ:


131

วิธีค้นหา 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)
Sandra Rossi

200

ncduฉันมักจะใช้ มันโต้ตอบและเร็วมาก


ใช่และมันเล็ก!
ลุคสแตนลีย์

5
ฉันรัก ncdu มันเป็นหนึ่งใน google ที่ฉันโปรดปรานพบ
Rob

5
ว้าว. ฉันไม่รู้ว่าสิ่งนี้มีอยู่จริง ขอบคุณ!
พิกเซล

22
+1000 สำหรับncdu--- มันเหมือนกับhtopพื้นที่ดิสก์ สุดยอดประโยชน์!
Noah Sussman

เนื่องจากมีดูเหมือนจะไม่เป็นตัวเลือกธงมิได้ .config [t] [g] [g]ที่นี่เป็นลำดับที่สำคัญที่คุณอาจจะพิมพ์ทุกครั้งที่คุณเรียกมันหากคุณต้องการเห็นไฟล์และโฟลเดอร์ที่ปะปนกันและสถิติร้อยละญาติ:
rymo

37

สำหรับมุมมองด่วน:

du | sort -n

รายการไดเรกทอรีทั้งหมดที่ใหญ่ที่สุดล่าสุด

du --max-depth=1 * | sort -n

หรืออีกครั้งหลีกเลี่ยงการซ้ำซ้อน *:

du --max-depth=1 | sort -n

แสดงรายการไดเรกทอรีทั้งหมดในไดเรกทอรีปัจจุบันด้วยไดเรกทอรีที่ใหญ่ที่สุด

(ต้องใช้พารามิเตอร์ -n ในการเรียงลำดับเพื่อให้เขตข้อมูลแรกถูกเรียงลำดับเป็นตัวเลขแทนที่จะเป็นข้อความ แต่สิ่งนี้จะ จำกัด การใช้พารามิเตอร์ -h เพื่อ du ตามที่เราต้องการจำนวนที่สำคัญสำหรับการเรียงลำดับ)

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


3
เป็น * จำเป็นจริงๆ โดยค่าเริ่มต้นจะไม่รวมไฟล์ทั้งหมดใน dir ปัจจุบันหรือไม่
46499 Josh Josh

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

นี่เป็นเรื่องปกติ แต่ผลลัพธ์ไม่ค่อยเป็นมิตร ฉันมักจะหันไปหาสิ่งนี้:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman # du --max-depth = 1 | จัดเรียง -n du: ตัวเลือกที่ผิดกฎหมาย - - การใช้งาน: du [-A] [-H | -L | -P] [-a | -s | ความลึก -d] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I หน้ากาก] [ไฟล์ ... ]
Holms

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- นิด ๆ หน่อย ๆ
Stuart Cardall

23

สำหรับสิ่งที่มากที่สุดที่ฉันชอบเครื่องมือ CLI แต่สำหรับการใช้งานไดรฟ์ผมชอบfilelight งานนำเสนอเป็นเรื่องง่ายสำหรับฉันมากกว่าเครื่องมือการจัดการพื้นที่อื่น ๆ ที่ฉันเคยเห็น

ภาพหน้าจอ Filelight


1
Filelight เป็นเครื่องมือในการตัดแต่งกิ่งขนหมูที่ฉันเลือก
Ryan Thompson

แอพที่ดีมาก +1
rpax

สายตามันเป็นเรื่องที่น่าสนใจทางศิลปะ แต่เป็นธรรมชาติ? เพียงแค่มองมันฉันก็ไม่รู้ว่ามันเป็นตัวแทนของอะไร มีใครอธิบายได้ไหม ฉันไปที่ไซต์และฉันไม่เห็นคำอธิบายใด ๆ
G-Man

เครื่องมือที่คล้ายกันบน Mac คือ DaisyDisk หาได้ที่daisydiskapp.com
computingfreak

20

Filelight ดีกว่าสำหรับผู้ใช้ KDE แต่เพื่อความสมบูรณ์ (ชื่อคำถามเป็นเรื่องทั่วไป) ฉันต้องพูดถึงBaobabรวมอยู่ใน Ubuntu, aka การวิเคราะห์การใช้งานดิสก์:

ป้อนคำอธิบายรูปภาพที่นี่


หากคุณกำลังมองหาสิ่งนี้บนแพลตฟอร์ม Mac ให้ชำระเงิน DaisyDisk
computingfreak

8

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

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่แน่ใจว่านี่เป็นเครื่องมือ KDE ที่คุณไม่ต้องการหรือไม่ แต่ฉันคิดว่ามันควรจะกล่าวถึงในคำถามเช่นนี้ เป็นเรื่องที่ดีและหลายคนอาจไม่รู้ - ฉันเพิ่งเรียนรู้เกี่ยวกับมันเมื่อเร็ว ๆ นี้เอง


ขอบคุณสำหรับคำตอบ. มันเป็นที่แน่นอนเครื่องมือเดียวกันที่ฉันมีใน KDE3 แต่ผมย้ายไป KDE 4
โรเบิร์ต Munteanu

คุณแน่ใจหรือว่าไม่สามารถรับ kdirstat สำหรับ KDE4 ได้
Jonik

4
Kdirstat ช้ามาก ๆ ใช้ncduแทน
Daenyth

ฉันเพิ่งกด ctrl + f เพื่อค้นหา ncdu และเห็นว่าฉันได้อัปเกรดแล้ว @Daenyth
Rob

บน KDE ก็เรียกว่าเพียงแค่k4dirstat
Phihag

5

การรวมกันเป็นเคล็ดลับที่ดีที่สุดใน Unix

du -sk $(find . -type d) | sort -n -k 1

จะแสดงขนาดไดเรกทอรีเป็น KB และเรียงลำดับเพื่อให้ใหญ่ที่สุดในตอนท้าย
มุมมองแบบต้นไม้จะต้องการอะไรมากกว่านี้ ... มันจำเป็นจริงๆหรือ?

โปรดทราบว่าการสแกนนี้ซ้อนอยู่ในไดเรกทอรีดังนั้นมันจะนับไดเรกทอรีย่อยอีกครั้งสำหรับไดเรกทอรีที่สูงขึ้นและไดเรกทอรีฐาน.จะปรากฏขึ้นในตอนท้ายเป็นผลรวมการใช้ประโยชน์ทั้งหมด

อย่างไรก็ตามคุณสามารถใช้การควบคุมความลึกในการค้นหาเพื่อค้นหาที่ความลึกที่เฉพาะเจาะจง
และมีส่วนร่วมกับการสแกนของคุณมากขึ้น ... ขึ้นอยู่กับสิ่งที่คุณต้องการ การควบคุมความลึกของfindด้วย-maxdepthและ-mindepthสามารถ จำกัด ความลึกของไดเรกทอรีย่อยเฉพาะ


นี่คือรูปแบบที่ละเอียดอ่อนสำหรับปัญหาหาเรื่องของคุณนานเกินไป

find . -type d -exec du -sk {} \; |  sort -n -k 1

ฉันพยายามที่และฉันมีจำนวนมาก 'du: งาน: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว'
จอชฮันท์

ขอบคุณสำหรับคำตอบ. แต่น่าเสียดายที่ฉันได้รับทุบตี: / usr / bin / du: รายการอาร์กิวเมนต์ยาวเกินไป
โรเบิร์ต Munteanu

3

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

ข้อความแสดงแทน


2

แม้ว่าจะไม่ได้ให้ผลลัพธ์ที่ซ้อนกันเช่นนั้นให้ลอง 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

ขอบคุณ แต่มันไม่ถูกต้องแสดงว่าไดเรกทอรีใดที่ใหญ่ที่สุด ถ้าฉันเริ่มในโฮมไดเร็กตอรี่ของฉัน, เอาต์พุตไม่สามารถใช้งานได้.
Robert Munteanu

1

นี่คือสคริปต์ที่ทำเพื่อคุณโดยอัตโนมัติ

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% ***

คุณอาจพบว่าสคริปต์นี้มีประโยชน์และมีประโยชน์มาก!


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

1
ลิงก์เสียหรือไม่
Danijel

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

1

วิธีค้นหาไฟล์ 25 อันดับแรกในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

จะส่งออกไฟล์ 25 อันดับแรกโดยการเรียงลำดับตามขนาดของไฟล์ผ่านคำสั่ง piped "sort -nr -k5"


1

อีกทางเลือกหนึ่งคือมีอายุที่แบ่งพื้นที่ดิสก์ตามเวลาการเข้าถึงล่าสุดซึ่งทำให้ง่ายต่อการค้นหาไฟล์ที่เสียพื้นที่

มันยังทำงานบนเซิร์ฟเวอร์ที่ไม่มี X Windows ด้วยการให้บริการหน้าเว็บชั่วคราวเพื่อให้สามารถวิเคราะห์การใช้งานจากระยะไกลด้วยกราฟ สมมติว่าที่อยู่ IP ของเซิร์ฟเวอร์คือ 192.168.1.101 คุณสามารถพิมพ์สิ่งนี้บนบรรทัดคำสั่งของเซิร์ฟเวอร์

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

สิ่งนี้จะพิมพ์ชื่อผู้ใช้รหัสผ่านและ URL ที่คุณสามารถเข้าถึง "GUI" และเรียกดูผลลัพธ์ เมื่อเสร็จแล้วยุติageduด้วยCtrl+Dบนเซิร์ฟเวอร์



0

ให้เสร็จสมบูรณ์รายการนิด ๆ หน่อย ๆ xdiskusageผมเพิ่มวิเคราะห์การใช้ดิสก์ที่ชื่นชอบของฉันซึ่งเป็น

GUI จำฉันเกี่ยวกับยูทิลิตี้ ol อื่น ๆ ที่ดีของมันได้อย่างรวดเร็วและไม่บวม แต่คุณสามารถนำทางได้อย่างง่ายดายในลำดับชั้นและมีตัวเลือกการแสดงผล:

$ xdiskusage /usr

ป้อนคำอธิบายรูปภาพที่นี่


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