ไฟล์ที่ใหญ่กว่า 1 GB และเก่ากว่า 6 เดือน


20

ฉันต้องการค้นหาไฟล์ที่มีขนาดมากกว่า 1 GB และเก่ากว่า 6 เดือนในเซิร์ฟเวอร์ทั้งหมด วิธีการเขียนคำสั่งสำหรับสิ่งนี้?

คำตอบ:


37

ใช้find:

find /path -mtime +180 -size +1G

-mtimeหมายถึงค้นหาเวลาแก้ไขที่มากกว่า 180 วัน (+180) และ-sizeพารามิเตอร์ค้นหาไฟล์ที่มีขนาดใหญ่กว่า 1GB


2
โปรดทราบว่าในการfindติดตั้งที่Gรองรับส่วนต่อท้ายนั้นหมายถึง GiB (1073741824 ไบต์) ไม่ใช่ GB (1000000000) พกพาคุณจะใช้find /path -mtime +180 -size +1073741824c
Stéphane Chazelas

1
หากคุณต้องการหลีกเลี่ยงการเห็นข้อผิดพลาดระหว่างรายการของไฟล์แบบนี้: find: a.txt :Permission deniedฉันขอแนะนำให้เพิ่มสิ่งนี้โดย 2>/dev/nullได้รับแรงบันดาลใจจากความคิดเห็นนี้: unix.stackexchange.com/questions/42841/…
gmansour

นอกจากนี้คุณยังสามารถxargs ls -lhSfind /path -mtime +180 -size +1G | xargs ls -lhS
ไพพ์

@ user553965 คำสั่งของคุณไม่ทำงาน สิ่งที่จำเป็นจริง ๆ ในการจัดเรียงตามขนาดคือ: find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS. หมายเหตุสำหรับมือใหม่: การเปลี่ยนเส้นทางของ2>/dev/nullเพียงแค่กำจัดpermission deniedข้อผิดพลาดซึ่งจะปรากฏขึ้นอย่างหลีกเลี่ยงไม่ได้เมื่อค้นหาจากราก หากต้องการจัดเรียงตามวันที่แก้ไขล่าสุดให้ใช้ls -lhtแทนและเพิ่มrไปยังlsคำสั่งเช่นls -lhSrจะย้อนกลับผลลัพธ์
mattst

6

find / -size +1G -mtime +180 -type f -print

ต่อไปนี้เป็นคำอธิบายของตัวเลือกคำสั่งตามตัวเลือก: เริ่มต้นจากไดเรกทอรีรากค้นหาไฟล์ทั้งหมดที่ใหญ่กว่า 1 Gb แก้ไขมากกว่า 180 วันที่ผ่านมาซึ่งเป็นประเภท "ไฟล์" และพิมพ์เส้นทางของพวกเขา

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