Tìm tất cả các tệp cũ hơn một phút


8

Làm cách nào tôi có thể sử dụng findđể chọn các tệp đã được ghi và không được sửa đổi trong phút cuối?

Tôi biết tôi có thể làm điều đó theo cách khác, tìm các tệp được sửa đổi trong 60 giây qua -mtime -60s, nhưng tôi muốn những tệp chưa được sửa đổi trong 60 giây qua.

Tôi sử dụng Linux và gặp lỗi này nếu tôi sử dụng giây:

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

Câu trả lời:


13

Sử dụng find /path -type f -mtime +60s

Ngay -trước các chữ số không phải là một "đối số gạch ngang" thông thường, mà có nghĩa là "ít hơn". +sau đó là "nhiều hơn".

Từ man find:

Tất cả các nguyên hàm có tham số số cho phép số đứng trước dấu cộng (`` + '') hoặc dấu trừ (`` - ''). Dấu cộng trước có nghĩa là `` nhiều hơn n '', dấu trừ trước có nghĩa là `` nhỏ hơn n '' và không có nghĩa là `` chính xác n ''.

Cần lưu ý rằng đối với chính xác n , thời gian được làm tròn. Vì vậy 1(1 ngày) không có nghĩa là 86400 giây.


2
Nói một cách chính xác, +60không phải là đối nghịch -60, vì cùng một lý do ít hơn không phải là đối lập lớn hơn : Cả hai loại trừ giá trị chính xác mà họ so sánh với. Nhưng câu hỏi của bạn không cho biết chính xác hành vi bạn muốn.
Daniel Beck

Điều này thực sự không giống nhau, vì! hoàn nguyên "truy vấn" ban đầu. Nhưng đồng ý, OP không chỉ định những gì anh ta muốn.
Karolos

Ngày hôm sau, OP tuyên bố nó là trên Linux, không phải Mac OS X. Nếu điều đó sẽ thay đổi câu trả lời, bạn có thể cập nhật nó không?
Peter Mortensen

1
Vâng, điều này không hoạt động trên Linux. Ít nhất là RHEL 5.6. Tuy nhiên, phản ứng của SiegeX không hoạt động.
MattPark

2
Điều này không hoạt động trên CentOS. Như được cho là nó hoạt động trong Mac OS X
trante

14
find . -type f -mmin +1

Thí dụ

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

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

Nó không còn được gắn thẻ với osx.
Peter Mortensen

4

Thứ hai -trong -mtime -60skhông một tùy chọn dấu phân cách.

-mtimelà một tùy chọn và nó được theo sau bởi một đối số tùy chọn . Đối số tùy chọn là -60s-trong đó là một phần của chính đối số tùy chọn, không phải là dấu phân cách tùy chọn. Nó có nghĩa là "ít hơn 60 giây". Đối số tùy chọn 60s+60scó nghĩa là "bằng 60 giây" và "lớn hơn 60 giây", tương ứng.

Hướng dẫn Apple MacOS và hướng dẫn FreeBSD đề cập đến các tiền tố +-tiền tố ở chính xác một nơi và quên giải thích bất cứ nơi nào chúng là. Đây là những gì họ đang có.

(Hướng dẫn sử dụng thông tin GNU cho GNU findcó cùng một thiếu sót, đủ thú vị. Tuy nhiên, findcú pháp của GNU theo thời gian có phần khác với findcú pháp BSD và MacOS .)

đọc thêm


1
Thậm chí còn tệ hơn là chỉ giải thích nó ở một nơi chính xác : Tất cả các tùy chọn khác đề cập đến atimeđịnh dạng thời gian, nhưng điều đó cũng không giải thích các tiền tố . Đó là một phần riêng biệt không được tham chiếu.
Daniel Beck

Thật; và bạn sẽ thấy rằng tôi đã viết nó. Tôi đã viết "đề cập" và "quên giải thích bất cứ nơi nào". ☺
JdeBP

Tôi không có ý mâu thuẫn với bạn, chỉ muốn chỉ ra rằng chính xác một nơi cũng là nơi tồi tệ nhất có thể từ một "hãy lướt qua trang người đàn ông" POV.
Daniel Beck

Nhưng nó không được giải thích ở một nơi chính xác. Nó không được giải thích ở bất cứ nơi nào cả. Đối với một tập hợp các trang hướng dẫn thường được viết và chỉnh sửa khá tốt, theo kinh nghiệm của tôi, đó là một thiếu sót đáng ngạc nhiên.
JdeBP

1
Heh! Đó là bởi vì bạn kỳ diệu đã biết câu trả lời và có thể kết nối twain khi đọc tài liệu, điền vào những gì không thực sự được viết. Những người không có (y) biết trước của chúng tôi và đang đọc hướng dẫn để tìm hiểu phải tự hỏi tại sao không có lời giải thích nào về "công cụ sửa đổi" ở đâu. ☺
JdeBP

3

Bạn sẽ có thể sử dụng

find . ! -mtime -60s

1
Yêu cầu ngoặc đơn cho tôi:find . !( -mtime -60s )
Der Hochstapler

@OliverSalzburg: Trên máy Mac của tôi, nó hoạt động tốt mà không cần dấu ngoặc đơn (Darwin Kernel Phiên bản 11.2.0).
Karolos

1

Trong các hệ thống Unix - thời gian được sử dụng theo sau là +/- theo sau là một số theo sau là đơn vị thời gian. [+ -] nn [dms]

Linux sử dụng mtime trong nhiều ngày, mmin trong vài phút, nhưng dường như không có tùy chọn giây và không sử dụng công cụ xác định đơn vị thời gian. Dấu + hoặc - vẫn đề cập đến lớn hơn hoặc nhỏ hơn thời gian chứ không phải là đối số tùy chọn như đã đề cập ở trên.

Bạn có thể sử dụng -mmin 1, nhưng /unix/238738/find-files-newer-than-15-seconds-but-older-than-2- giây nói về cách xử lý giây nói chung .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.