การค้นหาไฟล์ขนาดใหญ่ทั้งหมดในระบบไฟล์รูท


124

ฉันมีเซิร์ฟเวอร์ linux ซึ่งปัจจุบันมีการใช้พื้นที่ด้านล่าง:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

อย่างที่เห็น. /อยู่ที่ 78% ฉันต้องการตรวจสอบว่าไฟล์หรือโฟลเดอร์ใดใช้พื้นที่ว่าง

ฉันลองสิ่งนี้:

find . -type d -size +100M

ซึ่งแสดงผลลัพธ์แบบนี้:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

นี่คือปัญหาของฉัน ฉันต้องการเพียงชื่อของไฟล์ที่อยู่ในโฟลเดอร์ที่มีการบริโภคพื้นที่ที่/และไม่ได้หรือ/u01 /homeเนื่องจาก/เป็นฐานของทุกอย่างมันจึงแสดงให้ฉันเห็นทุกไฟล์ในเซิร์ฟเวอร์ของฉัน

เป็นไปได้ที่จะได้รับไฟล์ขนาดใหญ่ที่มีส่วนร่วม 78% ของ/?


3
ดู-xdevคำกริยาค้นหา ดูเพิ่มเติมที่du -kx / | xdu(หรือxdiskusage)
Stéphane Chazelas

ดูเพิ่มเติมคำตอบของฉันคำถามที่เกี่ยวข้อง
jofel

1
เกี่ยวข้องfind . -type f -print | xargs du -sk | sort -rn
user13107

คำตอบ:


216

ลอง:

find / -xdev -type f -size +100M

มันแสดงรายการไฟล์ทั้งหมดที่มีขนาดใหญ่กว่า 100M

ncduหากคุณต้องการทราบเกี่ยวกับไดเรกทอรีคุณสามารถลอง

หากคุณไม่ได้ใช้งาน Linux คุณอาจต้องใช้-size +204800หรือ-size +104857600cเนื่องจากMคำต่อท้ายหมายถึงเมกะไบต์ไม่ได้อยู่ใน POSIX

find / -xdev -type f -size +102400000c

1
-xdevเพียงป้องกันไม่ให้ค้นพบการเดินข้ามระบบไฟล์ดังนั้นคุณจะค้นหาเฉพาะไดรฟ์ทางกายภาพปัจจุบันของคุณ หากนั่นไม่ใช่สิ่งที่คุณต้องการเพียงลบ-xdevarg
เตาแก๊ส

49

นอกจาก @Gnouc แล้วคุณยังสามารถเพิ่มls -laเพื่อรับรายละเอียดเพิ่มเติมได้อีกด้วย คุณควรsudo privilegesจะทำอย่างนั้น

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

หากต้องการดูไฟล์ที่อยู่ในกิกะไบต์เท่านั้นให้ทำ:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

คำสั่งต่อไปนี้ไม่เพียง แต่จะค้นหาไฟล์ 50 อันดับแรกที่มีขนาดใหญ่ที่สุด (> 100M) ในระบบไฟล์ของคุณ แต่ยังเรียงลำดับ (GNU sort) ตามลำดับที่ใหญ่ที่สุด:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev อย่าลงไดเรกทอรีในระบบไฟล์อื่น ๆ

บน BSD findใช้-xซึ่งเทียบเท่ากับ-xdevหลักที่เลิกใช้แล้ว

สำหรับไฟล์และไดเรกทอรีทั้งหมดจะง่ายยิ่งขึ้น:

du -ahx / | sort -rh | head -20

( -xแฟล็กคือสิ่งที่จำเป็นเพื่อ จำกัดduระบบไฟล์เดียว)

หากคุณไม่ได้ใช้ GNU sort(จากcoreutils) ให้ใช้โดยไม่-h:

du -ax / | sort -rn | head -20

ไดเรกทอรีปัจจุบันเท่านั้น (เพื่อให้ได้ผลลัพธ์ที่รวดเร็ว) แทนที่ด้วย/.


1
ฉันจะพูดถึงว่าวิธีนี้ดีเพราะ-hแสดงเอาท์พุทที่มนุษย์สามารถอ่านได้และเพิ่มเอาท์พุทตัวอย่าง
Ciro Santilli 新疆改造中心法轮功六四事件

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