ค้นหาไฟล์ที่ใหม่กว่า 15 วินาที แต่เก่ากว่า 2 วินาที


17

ฉันต้องการค้นหาไฟล์ที่ใหม่กว่า 15 วินาที แต่เก่ากว่า 2 วินาที นี่คือสคริปต์ที่ฉันใช้ในขณะนี้ซึ่งคว้าไฟล์ใหม่กว่า 15 วินาที:

find /my/directory -name '*.jpg' -not -newermt '-15 seconds'

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก


2
คุณใช้ระบบปฏิบัติการอะไร มีความแตกต่างในการfindใช้งาน
terdon

ไฟล์ควรจะถูกแก้ไขเมื่อ 2 วินาทีที่ผ่านมาตรงกันหรือไม่ ไฟล์ใดที่ถูกแก้ไขประมาณ 15 วินาทีก่อน?
Mikel

ใหม่กว่า 2 วินาทีในขณะที่สคริปต์เริ่มทำงานหรือ ณ เวลานั้นสิ้นสุดหรือไม่
Stéphane Chazelas

@ Mikel นั้นอาจไม่เกี่ยวข้องเนื่องจากนาฬิกามีความละเอียดระดับนาโนวินาทีในปัจจุบัน
Stéphane Chazelas

1
ตกลง ... เนื่องจากไม่มีใครถาม ... @ Yllier123 ทำไมคุณต้องค้นหาไฟล์ที่สร้างขึ้นระหว่าง 2 <x <15 วินาที ฉันแค่อยากรู้
C Bauer

คำตอบ:


17

คุณสามารถรวมภาคแสดงหลายรายการโดยผูกมัดพวกเขา

ไม่มีแต่คุณสามารถเขียนว่าเป็น-oldermt-not -newermt

คุณต้องการ:

  • -newermt '-15 seconds' เพื่อบอกว่าไฟล์มีอายุน้อยกว่า 15 วินาทีและ
  • -not -newermt '-2 seconds' เพื่อบอกว่าไฟล์มีอายุมากกว่า 2 วินาที

ลอง:

find /my/directory -newermt '-15 seconds' -not -newermt '-2 seconds'

หรือเพื่อให้สอดคล้องกับ POSIX:

find /my/directory -newermt '-15 seconds' \! -newermt '-2 seconds'

นอกจากนี้เพื่อให้คุณ (และผู้อ่านรายอื่น) ทราบว่า "ใหม่กว่า" หมายถึงแก้ไขได้เร็วกว่าไม่ใช่เพิ่งสร้างเร็วกว่า


3
ดี โปรดทราบว่า-not -newermt '-2 seconds'จะจับคู่ไฟล์เก่าอย่างสมบูรณ์ด้วย 2 วินาที ใช้-not -newermt '3 seconds'เพื่อยกเว้นสิ่งเหล่านี้เช่นกัน
terdon

1
ใช่ขอบคดีมันสนุกอยู่เสมอ ฉันไม่แน่ใจว่าจะใช้วิธีแก้ปัญหาใดสำหรับการเปรียบเทียบเหล่านี้ ข้อสันนิษฐานของฉันคือทุกสิ่งที่ได้รับการแก้ไข ~ 2.000000001 วินาทีที่ผ่านมาคือสิ่งที่ตรงกัน แต่นั่นก็ขึ้นอยู่กับระบบไฟล์และระบบปฏิบัติการของคุณด้วย
มิเคล

จุดดีฉันไม่รู้ว่าการแก้ปัญหาคืออะไร ฉันเพียงแค่ทดสอบด้วยและได้touch -d "2 seconds ago" file; find . -newermt '-15 seconds' -not -newermt '-2 seconds' file
terdon

@terdon ขึ้นอยู่กับว่า timestamps มีความละเอียดที่แม่นยำกว่าหนึ่งวินาทีหรือไม่ ที่จะขึ้นอยู่กับระบบระบบไฟล์และอาจแตกต่างกันระหว่างไฟล์ในระบบไฟล์เดียวกันหากใช้กับเครื่องหลายเครื่อง
แบล็กไลท์ส่องแสง

"ใหม่กว่า" หมายถึง "เร็วกว่า" เป็น "m" ซึ่งหมายถึง "แก้ไข"
OrangeDog

4

คุณไม่ได้พูดถึงระบบปฏิบัติการของคุณ ....

นี้ทำงานได้ดีกับการดำเนินการค้นหาที่ทันสมัยเช่นเดียวจาก FreeBSD sfindหรือมี

find /my/directory -name '*.jpg' -mtime -15s -mtime +2s

Sfind เป็นส่วนหนึ่งของเครื่องมือ Schily: http://sourceforge.net/projects/schilytools/files/

คำเตือน: sfindฉันเพิ่งค้นพบปัญหาใน หาก-mtimeข้อโต้แย้งน้อยกว่ายุค 60s ก็จะทำงานไม่ถูกต้องเท่าไฟล์กำลังเมื่อเทียบกับการประทับเวลา 60 -lsวินาทีในอนาคตที่คำนวณเดิมสำหรับสวิทช์ปีสำหรับ

BTW: -notไม่ได้เป็นของfindมันมันเป็น GNUism แบบพกพาไม่ได้


1
มีbashแท็ก…ดังนั้นสภาพแวดล้อมอาจเป็น Cygwin, Debian GNU / Hurd, bashทำงานบน FreeBSD หรือ Solaris, … ;-)
phk

สำหรับ GNU findดูเหมือนว่าทศนิยมแม้ว่าจะบ้า แต่ก็สามารถใช้เป็นวิธีแก้ปัญหาได้
Arthur2e5

POSIX หาไม่ได้!สำหรับ -Not ! expressionเป็น ดังนั้นไม่มีเรื่องใหญ่

@phk นี่คือเหตุผลที่ผมกล่าวถึงวิธีการที่ทำงานร่วมกับมาตรฐานที่เพิ่มขึ้นprimaryจากการfindที่จะแจ้งให้คนที่ไม่มีความจำเป็นที่มักจะเพิ่มใหม่primariesเพื่อหาสิ่งที่จะสามารถเพิ่มประสิทธิภาพการทำงาน BTW: คงที่ได้รับการตีพิมพ์ในlibfind schily tools
schily

@BinaryZebra ปัญหาคือgfindเพิ่ม-notชื่อแทนเลย มันไม่เคยต้องการและการมีอยู่ของมันสามารถถูกมองว่าเป็นล็อคผู้ขายในกลยุทธ์
schily
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.