ใช้ find -mmin เพื่อค้นหาไฟล์ที่มีเวลาแก้ไขในอนาคต


9

ฉันสามารถใช้

find . -mmin -5

เพื่อค้นหาไฟล์ที่เปลี่ยนแปลงใน 5 นาทีที่ผ่านมา อย่างไรก็ตามหากฉันพยายามค้นหาไฟล์ที่มีเวลาในการแก้ไขในอนาคตโดยให้จำนวนลบfindปฏิเสธที่จะทำ:

find . -mmin --1

มีวิธีให้เวลาแก้ไขในอนาคตกับ Linux มาตรฐานfindหรือไม่

คำตอบ:


9

ในการค้นหาไฟล์ที่แก้ไขอย่างน้อย 5 วันในอนาคตให้ใช้:

find . -newermt "5 days"

date -dไวยากรณ์สำหรับสเปคเวลาที่สอดคล้องกับหนึ่งสำหรับ ดูman findข้อมูลเกี่ยวกับสวิตช์ที่ตั้งชื่อ-newerXYเพื่อรับข้อมูลเพิ่มเติม

มันเป็นไปไม่ได้ที่จะใช้เช่น-mminการทำเช่นนี้ มีรายงานว่าเป็นข้อผิดพลาดต่อ GNU findและได้รับการแก้ไขโดยการนำไปใช้-newerXYใน findutils 4.3.3 (~ 2007) ตามที่ฉันแสดงไว้ด้านบน


เห็นได้ชัดว่าไม่ใช่ GNU พบว่ามีการใช้ แต่ BusyBox

จากนั้นคุณควรจะสามารถสร้างไฟล์ชั่วคราวด้วยtouch -dและวันที่ในอนาคตจากนั้นใช้-newerสวิตช์สำหรับfindเช่น:

touch -d "+5 days" tmpfile
find . -newer tmpfile

BusyBox touchไม่สนับสนุนรูปแบบวันนั้น แต่หลักการจะเหมือนกันและสนับสนุนfind -newerการสร้างไฟล์อ้างอิงพร้อมกับวันที่ที่ถูกต้องจะเหลือเป็นแบบฝึกหัดสำหรับผู้อ่าน (สะดวกในการเขียนเสมอ)


ขอบคุณ ปัญหาของฉันคือการค้นหาของฉันคือ BusyBox แบบฝังตัวเก่าที่ค้นพบและไม่พบ binutil เห็นได้ชัดว่าวิธี linux มาตรฐานไม่ทำงานที่นี่ :(
Muxecoid

@Muxecoid: ฉันปรับปรุงคำตอบของฉันด้วยคำพูด BusyBox
Daniel Andersson

นี่เพิ่งบันทึกปัญหาของฉันบนเครื่องใหม่ที่ฉันทำอะไรบางอย่างในสิบชั่วโมงในอนาคตโดยบังเอิญ (ชดเชยเขตเวลาที่ใช้กับนาฬิกาฮาร์ดแวร์ออฟเซ็ตที่มีอยู่แล้ว) และหลังจากแก้ไขนาฬิกาconfigureสคริปต์ก็บ่นเกี่ยวกับสิ่งต่าง ๆ ในอนาคต ชั่วโมงครึ่งครึ่งหรือมากกว่านั้น): find . -newermt '1 hour' | xargs touch -d '-9 hours'และฉันสามารถทำต่อไปได้ :-)
Chris Morgan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.