ค้นหาไฟล์ทั้งหมดที่เก่ากว่าหนึ่งนาที


8

ฉันfindจะใช้เพื่อเลือกไฟล์ที่เขียนและไม่ได้แก้ไขในนาทีสุดท้ายได้อย่างไร

ฉันรู้ว่าฉันสามารถทำสิ่งอื่น ๆ รอบ ๆ ค้นหาไฟล์ที่แก้ไขใน 60 วินาทีสุดท้ายด้วย-mtime -60sแต่ฉันต้องการไฟล์ที่ไม่ได้รับการแก้ไขใน 60 วินาทีที่ผ่านมา

ฉันใช้ Linux และได้รับข้อผิดพลาดนี้หากฉันใช้วินาที:

find ??/ -mtime +60s -name blah.tsv
find: invalid argument `+60s' to `-mtime'

คำตอบ:


13

ใช้ find /path -type f -mtime +60s

-ก่อนตัวเลขไม่ได้เป็นปกติ "อาร์กิวเมนต์รีบ" แต่หมายถึง "น้อยกว่า" +ถ้าอย่างนั้นก็คือ "มากกว่า"

จากman find:

พรรคทั้งหมดที่ใช้อาร์กิวเมนต์ที่เป็นตัวเลขอนุญาตให้มีหมายเลขนำหน้าด้วยเครื่องหมายบวก (`` + '') หรือเครื่องหมายลบ (`` - '') เครื่องหมายบวกก่อนหน้าหมายถึง `` มากกว่า n '' เครื่องหมายลบก่อนหน้าหมายถึง `` น้อยกว่า n '' และไม่ได้หมายความว่า `` n '' ทั้งหมด

ควรสังเกตว่าสำหรับn แน่นอนเวลาถูกปัดเศษ ดังนั้น1(1 วัน) ไม่ได้หมายถึง 86400 วินาที


2
การพูดอย่างเคร่งครัด+60ไม่ใช่สิ่งที่ตรงกันข้าม-60ด้วยเหตุผลเดียวกันที่น้อยกว่าไม่ตรงกันข้ามมากกว่า : ทั้งสองไม่รวมค่าที่แน่นอนที่พวกเขาเปรียบเทียบ แต่คำถามของคุณไม่ได้ระบุพฤติกรรมที่คุณต้องการ
Daniel Beck

สิ่งนี้ไม่เหมือนกันอย่างแน่นอนตั้งแต่! ย้อนกลับ "แบบสอบถาม" เดิม แต่ตกลง OP ไม่ได้ระบุสิ่งที่เขาต้องการ
Karolos

วันต่อมา OP ระบุว่ามันอยู่บน Linux ไม่ใช่ Mac OS X ถ้านั่นจะเปลี่ยนคำตอบคุณสามารถอัพเดทได้ไหม?
Peter Mortensen

1
ใช่มันใช้ไม่ได้กับ Linux อย่างน้อย RHEL 5.6 อย่างไรก็ตามคำตอบของ SiegeX ด้านล่างใช้งานได้
MattPark

2
สิ่งนี้ใช้ไม่ได้กับ CentOS อย่างที่ควรจะเป็นใน Mac OS X
trante

14
find . -type f -mmin +1

ตัวอย่าง

$ ls *
four.txt  one.txt  three.txt  two.txt

$ touch foo && find . -mmin +1
.
./three.txt
./four.txt
./two.txt
./one.txt

osxมันไม่ได้ติดแท็กด้วย
Peter Mortensen

4

ที่สอง-ใน-mtime -60sคือไม่คั่นตัวเลือก

-mtimeเป็นตัวเลือกและจะตามมาด้วยการโต้แย้งตัวเลือก อาร์กิวเมนต์ตัวเลือกคือ-60sและ-ในนั้นเป็นส่วนหนึ่งของตัวเลือกอาร์กิวเมนต์เองไม่ใช่ตัวคั่นตัวเลือก มันหมายถึง "น้อยกว่า 60 วินาที" อาร์กิวเมนต์ตัวเลือก60sและ+60sค่าเฉลี่ย "เท่ากับ 60 วินาที" และ "มากกว่า 60 วินาที" ตามลำดับ

คู่มือ Apple MacOS และคู่มือ FreeBSD พูดถึง+และ-นำหน้าในที่เดียวและอย่าลืมอธิบายสิ่งที่พวกเขาเป็น นี่คือสิ่งที่พวกเขา

(คู่มือ GNU Info สำหรับ GNU findมีการละเว้นเหมือนกันน่าสนใจพออย่างไรก็ตามfindไวยากรณ์ของGNU สำหรับเวลานั้นค่อนข้างแตกต่างจากfindไวยากรณ์BSD และ MacOS )

อ่านเพิ่มเติม

  • Apple จัดตั้งขึ้น (2008-02-24) findMacOS 10 หน้าคู่มือ ไลบรารีนักพัฒนา MacOS 10
  • find(1) 2010/03/17 คู่มือคำสั่งทั่วไปของ FreeBSD โครงการ FreeBSD

1
ก็จะยิ่งเลวร้ายยิ่งกว่าเพียงแค่การอธิบายไว้ในสถานที่ที่ว่าหนึ่ง : ตัวเลือกอื่น ๆ ทั้งหมดอ้างอิงถึงatimeสำหรับรูปแบบเวลา แต่ที่ไม่ยังไม่ได้อธิบายคำนำหน้า เป็นส่วนแยกต่างหากที่ไม่ได้อ้างอิง
Daniel Beck

แท้จริง; และคุณจะพบว่าฉันเขียนมัน ฉันเขียนว่า "พูดถึง" และ "ลืมอธิบายได้ทุกที่" ☺
JdeBP

ฉันไม่ได้ตั้งใจจะแย้งกับคุณแค่อยากจะชี้ให้เห็นว่าที่แห่งเดียวก็เป็นสถานที่ที่เลวร้ายที่สุดจาก "ลองอ่านหน้าคน"
Daniel Beck

แต่มันไม่ได้อธิบายในที่เดียว มันไม่ได้อธิบายในที่ใด ๆ เลย สำหรับชุดของหน้าคู่มือที่เขียนและแก้ไขโดยทั่วไปค่อนข้างดีจากประสบการณ์ของฉันมันเป็นเรื่องที่น่าแปลกใจ
JdeBP

1
หึ! นั่นเป็นเพราะคุณรู้คำตอบอย่างน่าอัศจรรย์แล้วและสามารถเชื่อมต่อทั้งคู่เมื่ออ่านเอกสารเติมสิ่งที่ไม่ได้เขียนจริง คนที่ไม่มี (y) ความรู้ล่วงหน้าของเราและกำลังอ่านคู่มือเพื่อค้นหาต้องสงสัยว่าทำไมไม่มีคำอธิบายว่า "ตัวแก้ไข" อยู่ที่ใด ☺
JdeBP

3

คุณควรจะสามารถใช้

find . ! -mtime -60s

1
ต้องใช้วงเล็บสำหรับฉัน:find . !( -mtime -60s )
Der Hochstapler

@OliverSalzburg: สำหรับ Mac ของฉันก็ใช้งานได้โดยไม่ต้องใช้วงเล็บ (Darwin Kernel เวอร์ชั่น 11.2.0)
Karolos

1

ในระบบ Unix - เวลาที่ใช้ในการตามด้วย +/- ตามด้วยหมายเลขตามด้วยหน่วยเวลา [+ -] NN [DMS]

Linux ใช้ mtime เป็นเวลาหลายวันนาทีนาที แต่ดูเหมือนจะไม่มีตัวเลือกวินาทีและไม่ได้ใช้ตัวระบุหน่วยเวลา เครื่องหมาย + หรือ - ยังหมายถึงมากกว่าหรือน้อยกว่าเวลาแทนที่จะเป็นอาร์กิวเมนต์ตัวเลือกตามที่กล่าวไว้ข้างต้น

คุณสามารถใช้ -mmin 1 แต่/unix/238738/find-files-newer-than-15-seconds-but-older-than-2-secondsอธิบายวิธีจัดการกับวินาทีโดยทั่วไป .

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.