การค้นหาไฟล์ที่ใช้พื้นที่ดิสก์มากที่สุด


43

เป็นไปได้หรือไม่ที่จะแสดงรายการไฟล์ที่ใหญ่ที่สุดในฮาร์ดไดรฟ์ของฉัน ฉันใช้df -Hเพื่อแสดงการใช้งานดิสก์ของฉันบ่อยครั้งแต่นี่จะให้เปอร์เซ็นต์เต็ม, เหลือ GB เท่านั้นและอื่น ๆ

ฉันทำการคำนวณข้อมูลจำนวนมากด้วยไฟล์ขนาดเล็กจำนวนมากและไฟล์ขนาดเล็กมากจำนวนมาก เนื่องจากพื้นที่ดิสก์ส่วนใหญ่ที่ฉันใช้อยู่มีจำนวนไฟล์น้อยมากจึงเป็นเรื่องยากที่จะติดตามว่าไฟล์ขนาดใหญ่เหล่านี้อยู่ที่ไหน การลบไฟล์ 1 kB ไม่มีพื้นที่ว่างมากนัก แต่การลบไฟล์มีขนาด 100 GB มีวิธีใดบ้างในการจัดเรียงไฟล์บนฮาร์ดไดรฟ์ตามขนาดไฟล์

ขอบคุณ


สำหรับ 'tdu' โปรดดูที่: unix.stackexchange.com/questions/425615/…
Joseph Paul

คำตอบ:


47

ด้วยเครื่องมือที่มีมาตรฐาน:

หากต้องการแสดงรายการไฟล์ที่ใหญ่ที่สุด 10 อันดับแรกจากไดเรกทอรีปัจจุบัน: du . | sort -nr | head -n10

ในการแสดงรายการไดเรกทอรีที่ใหญ่ที่สุดจากไดเรกทอรีปัจจุบัน: du -s * | sort -nr | head -n10

อัปเดตทุกวันนี้ฉันมักจะใช้แบบฟอร์มที่อ่านได้ง่ายกว่า (ตามที่ Jay Chakra อธิบายไว้ในคำตอบอื่นแล้วปล่อย| head -n10ให้มันเลื่อนหน้าจอบรรทัดสุดท้ายมีไฟล์หรือไดเรกทอรีที่ใหญ่ที่สุด (ต้นไม้)

บางครั้งเช่น เมื่อคุณมีจุดเชื่อมต่อจำนวนมากในไดเรกทอรีปัจจุบันแทนที่จะใช้-xหรือหลาย--exclude=PATTERNจุดก็เป็นวิธีที่สะดวกในการติดตั้งระบบไฟล์บนจุดเมานท์ที่ไม่ได้ใช้งาน ( บ่อยครั้ง /mnt ) และทำงานจากที่นั่น

โปรดทราบว่าเมื่อทำงานกับไดรฟ์ข้อมูลขนาดใหญ่ (NFS) คุณสามารถทำให้โหลดจำนวนมากบนแบ็กเอนด์หน่วยเก็บข้อมูล (filer) เมื่อเรียกใช้duไดเรกทอรี (sub) จำนวนมาก ในกรณีนั้นจะเป็นการดีกว่าถ้าจะพิจารณาตั้งค่าquotaระดับเสียง


3
สำหรับตัวเลือกแรกของคุณคุณไม่สามารถแสดงรายการเหล่านั้นด้วยได้ls -Sl | headหรือ
Bernhard

ไม่duสำรวจแผนผังไดเรกทอรีทั้งหมดในขณะที่ ls -S ตรวจสอบไดเรกทอรีปัจจุบันเท่านั้น
jippie

35

กำลังเพิ่มไปยังคำตอบของ jippie

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

du -sh * | sort -hr | head -n10

ตัวอย่าง:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

มันทำให้สะดวกในการอ่าน :)


14

ลองใช้ncduเพราะสามารถให้ภาพรวมของการใช้ดิสก์ได้ จากเว็บไซต์:

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


3

(GNU)

du -max /dir | sort -nจะแสดงไฟล์ขนาดใหญ่เช่นเดียวกับไดเรกทอรีขนาดใหญ่สามารถใช้เพื่อระบุตำแหน่งที่คุณต้องทำการล้างข้อมูล

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(ฉันรู้ว่ามันเป็นต้นไม้ที่ค่อนข้างเก่า: p)


2

มีวิธีที่ง่ายและมีประสิทธิภาพในการค้นหาขนาดของทุกไฟล์และไดเรกทอรีใน Ubuntu:

แอปพลิเคชั่น> อุปกรณ์เสริม> ตัววิเคราะห์การใช้งานดิสก์

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



0

คุณสามารถลองด้วยคำสั่งนี้มันจะแสดงรายการไฟล์ทั้งหมดที่มีขนาดใหญ่กว่า 20Mb

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2

3
หากไฟล์ที่ใหญ่ที่สุดในระบบไฟล์ของคุณคือ 20MB คุณอาจจะมีพื้นที่ดิสก์เหลือน้อย อย่างน้อยที่สุด HD ก็ทำให้สหัสวรรษนี้
เควิน

นั่นเป็นเพียงตัวอย่างคุณวางสิ่งที่คุณต้องการ จะพบทุกสิ่งที่ใหญ่กว่า 20MB ไม่เพียง 20MB เท่านั้น
patseb

ls -lhแล้วsort?? ls -sหรือstat -c %bอาจจะดีกว่า
มิเคล

ฉันไม่เข้าใจ ตัวอย่างของฉันใช้ ls และเรียงลำดับ เขาต้องการค้นหาไฟล์บนไดรฟ์ทั้งหมดไม่ใช่ไดเรกทอรี
patseb

0

พิมพ์คำสั่งต่อไปนี้

ซีดี /

จากนั้นพิมพ์

du -sh * | grep G

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


-2

คุณสามารถลองด้วยคำสั่งนี้มันจะแสดงรายการไฟล์ขนาดใหญ่:

ls -lrS | tail -1

แสดงไดเรกทอรีปัจจุบันไม่ใช่ HDD ทั้งหมด
slm

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