ฉันต้องการค้นหาไฟล์ที่มีขนาดมากกว่า 1 GB และเก่ากว่า 6 เดือนในเซิร์ฟเวอร์ทั้งหมด วิธีการเขียนคำสั่งสำหรับสิ่งนี้?
ฉันต้องการค้นหาไฟล์ที่มีขนาดมากกว่า 1 GB และเก่ากว่า 6 เดือนในเซิร์ฟเวอร์ทั้งหมด วิธีการเขียนคำสั่งสำหรับสิ่งนี้?
คำตอบ:
ใช้find
:
find /path -mtime +180 -size +1G
-mtime
หมายถึงค้นหาเวลาแก้ไขที่มากกว่า 180 วัน (+180) และ-size
พารามิเตอร์ค้นหาไฟล์ที่มีขนาดใหญ่กว่า 1GB
find: a.txt :Permission denied
ฉันขอแนะนำให้เพิ่มสิ่งนี้โดย 2>/dev/null
ได้รับแรงบันดาลใจจากความคิดเห็นนี้: unix.stackexchange.com/questions/42841/…
xargs ls -lhS
find /path -mtime +180 -size +1G | xargs ls -lhS
find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS
. หมายเหตุสำหรับมือใหม่: การเปลี่ยนเส้นทางของ2>/dev/null
เพียงแค่กำจัดpermission denied
ข้อผิดพลาดซึ่งจะปรากฏขึ้นอย่างหลีกเลี่ยงไม่ได้เมื่อค้นหาจากราก หากต้องการจัดเรียงตามวันที่แก้ไขล่าสุดให้ใช้ls -lht
แทนและเพิ่มr
ไปยังls
คำสั่งเช่นls -lhSr
จะย้อนกลับผลลัพธ์
find / -size +1G -mtime +180 -type f -print
ต่อไปนี้เป็นคำอธิบายของตัวเลือกคำสั่งตามตัวเลือก: เริ่มต้นจากไดเรกทอรีรากค้นหาไฟล์ทั้งหมดที่ใหญ่กว่า 1 Gb แก้ไขมากกว่า 180 วันที่ผ่านมาซึ่งเป็นประเภท "ไฟล์" และพิมพ์เส้นทางของพวกเขา
find
ติดตั้งที่G
รองรับส่วนต่อท้ายนั้นหมายถึง GiB (1073741824 ไบต์) ไม่ใช่ GB (1000000000) พกพาคุณจะใช้find /path -mtime +180 -size +1073741824c