หากfind
ไม่มี-mmin
และหากยังติดอยู่กับfind
ที่ยอมรับเฉพาะค่าจำนวนเต็มสำหรับ-mtime
แล้วทั้งหมดไม่จำเป็นต้องหายไปถ้าใครคิดว่า "เก่ากว่า" คล้ายกับ "ไม่ใหม่กว่า"
หากเราสามารถสร้างไฟล์ที่มีเวลาตัดเวลาเราก็สามารถถามได้ find
ให้ค้นหาไฟล์ที่ "ไม่ใหม่กว่า" ไฟล์อ้างอิงของเรา
ในการสร้างไฟล์ที่มีการประทับเวลาที่ถูกต้องเป็นบิตที่เกี่ยวข้องเพราะระบบที่ไม่ได้มีเพียงพอfind
อาจจะยังมีน้อยกว่าความสามารถในคำสั่งที่สามารถทำสิ่งที่ชอบdate
date +%Y%m%d%H%M%S -d "6 hours ago"
โชคดีที่เครื่องมือเก่าอื่น ๆ ที่สามารถจัดการสิ่งนี้ได้แม้ว่าจะเป็นวิธีที่ไม่สะดวกกว่า
พิจารณาว่าหกชั่วโมงคือ 21600 วินาที เราต้องการค้นหาเวลาที่มีเมื่อหกชั่วโมงก่อนในรูปแบบที่มีประโยชน์:
$ date && perl -e '@d=localtime time()-21600; \
printf "%4d%02d%02d%02d%02d.%02d\n", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]'
> Thu Apr 16 04:50:57 CDT 2020
202004152250.57
คำสั่ง perl สร้างวันที่มีประโยชน์ แต่ต้องใช้ให้ดีขึ้น:
$ date && touch -t `perl -e '@d=localtime time()-21600; \
printf "%4d%02d%02d%02d%02d.%02d\n", \
$d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]'` ref_file && ls -l ref_file
Thu Apr 16 04:53:54 CDT 2020
-rw-rw-rw- 1 root sys 0 Apr 15 22:53 ref_file
ตอนนี้โซลูชันสำหรับ UNIX เก่านี้มีบางอย่างที่สอดคล้องกับ:
$ find . -type f ! -newer ref_file -a ! -name ref_file -exec rm -f "{}" \;
มันอาจเป็นความคิดที่ดีในการทำความสะอาดไฟล์อ้างอิงของเรา
$ rm -f ref_file