เช่นเซิร์ฟเวอร์ MySQL กำลังทำงานบนเครื่อง Ubuntu ของฉัน ข้อมูลบางอย่างมีการเปลี่ยนแปลงในช่วง 24 ชั่วโมงที่ผ่านมา
สคริปต์อะไร (Linux) สามารถค้นหาไฟล์ที่มีการเปลี่ยนแปลงในช่วง 24 ชั่วโมงที่ผ่านมา?
กรุณาระบุชื่อไฟล์ขนาดไฟล์และเวลาที่แก้ไข
เช่นเซิร์ฟเวอร์ MySQL กำลังทำงานบนเครื่อง Ubuntu ของฉัน ข้อมูลบางอย่างมีการเปลี่ยนแปลงในช่วง 24 ชั่วโมงที่ผ่านมา
สคริปต์อะไร (Linux) สามารถค้นหาไฟล์ที่มีการเปลี่ยนแปลงในช่วง 24 ชั่วโมงที่ผ่านมา?
กรุณาระบุชื่อไฟล์ขนาดไฟล์และเวลาที่แก้ไข
คำตอบ:
หากต้องการค้นหาไฟล์ทั้งหมดที่แก้ไขใน 24 ชั่วโมงที่ผ่านมา (เต็มวันล่าสุด) ในไดเรกทอรีเฉพาะและไดเรกทอรีย่อย:
find /directory_path -mtime -1 -ls
ควรเป็นที่ชื่นชอบของคุณ
-
ก่อนที่จะ1
เป็นสิ่งที่สำคัญ - มันหมายความว่าอะไรเปลี่ยนแปลงวันหนึ่งหรือน้อยกว่าที่ผ่านมา +
ก่อนที่1
อะไรจะแทนค่าเฉลี่ยการเปลี่ยนแปลงอย่างน้อยหนึ่งวันที่ผ่านมาในขณะที่มีอะไรก่อนที่1
จะมีความหมายมันก็เปลี่ยนไปไขว่คว้าหนึ่งวันที่ผ่านมาไม่มากไม่น้อย
-
ก่อนถึงค่าตัวเลข?
-ls
เมื่อใช้ในสคริปต์
คุณสามารถทำได้ด้วย
find . -mtime 0
จากman find
:
เวลา [เนื่องจาก] แต่ละไฟล์ถูกแก้ไขครั้งล่าสุดถูกหารด้วย 24 ชั่วโมงและส่วนที่เหลือจะถูกยกเลิก ซึ่งหมายความว่าในการจับคู่ -mtime 0 ไฟล์จะต้องมีการแก้ไขในอดีตซึ่งน้อยกว่า 24 ชั่วโมงที่ผ่านมา
อีกวิธีที่มีมนุษยธรรมมากขึ้น:
find /<directory> -newermt "-24 hours" -ls
หรือ:
find /<directory> -newermt "1 day ago" -ls
หรือ:
find /<directory> -newermt "yesterday" -ls
บนระบบที่เข้ากันได้กับ GNU (เช่น Linux):
find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more
รายการนี้จะแสดงรายการไฟล์และไดเรกทอรีที่ได้รับการแก้ไขใน 24 ชั่วโมงที่ผ่านมา ( -mtime 0
) โดยจะแสดงรายการเวลาที่แก้ไขล่าสุดในรูปแบบที่สามารถจัดเรียงได้และมนุษย์อ่านได้ ( %T+
) ตามด้วยขนาดไฟล์ ( %s
) ตามด้วยชื่อไฟล์แบบเต็ม ( %p
) แต่ละไฟล์คั่นด้วยแท็บ ( \t
)
2>/dev/null
โยนเอาต์พุต stderr ใด ๆ ออกไปดังนั้นข้อความแสดงข้อผิดพลาดจะไม่ทำให้น้ำขุ่น sort -r
เรียงลำดับผลลัพธ์ตามการแก้ไขล่าสุดก่อน และ| more
แสดงผลลัพธ์ครั้งละหนึ่งหน้า
| less
แทน| more
ฉันได้
สำหรับผู้อื่นที่มาถึงที่นี่ในอนาคต (รวมถึงตัวฉันเอง) ให้เพิ่มตัวเลือก -name เพื่อค้นหาประเภทไฟล์เฉพาะเช่น: find /var -name "*.php" -mtime -1 -ls
คำสั่งนี้ใช้ได้สำหรับฉัน
find . -mtime -1 -print