ฉันสามารถใช้
find . -mmin -5
เพื่อค้นหาไฟล์ที่เปลี่ยนแปลงใน 5 นาทีที่ผ่านมา อย่างไรก็ตามหากฉันพยายามค้นหาไฟล์ที่มีเวลาในการแก้ไขในอนาคตโดยให้จำนวนลบfindปฏิเสธที่จะทำ:
find . -mmin --1
มีวิธีให้เวลาแก้ไขในอนาคตกับ Linux มาตรฐานfindหรือไม่
ฉันสามารถใช้
find . -mmin -5
เพื่อค้นหาไฟล์ที่เปลี่ยนแปลงใน 5 นาทีที่ผ่านมา อย่างไรก็ตามหากฉันพยายามค้นหาไฟล์ที่มีเวลาในการแก้ไขในอนาคตโดยให้จำนวนลบfindปฏิเสธที่จะทำ:
find . -mmin --1
มีวิธีให้เวลาแก้ไขในอนาคตกับ Linux มาตรฐานfindหรือไม่
คำตอบ:
ในการค้นหาไฟล์ที่แก้ไขอย่างน้อย 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การสร้างไฟล์อ้างอิงพร้อมกับวันที่ที่ถูกต้องจะเหลือเป็นแบบฝึกหัดสำหรับผู้อ่าน (สะดวกในการเขียนเสมอ)
configureสคริปต์ก็บ่นเกี่ยวกับสิ่งต่าง ๆ ในอนาคต ชั่วโมงครึ่งครึ่งหรือมากกว่านั้น): find . -newermt '1 hour' | xargs touch -d '-9 hours'และฉันสามารถทำต่อไปได้ :-)