Nhận tất cả các tệp đã được sửa đổi vào một ngày cụ thể


20

Có thể tìm thấy tất cả phpcác tệp trong một thư mục nhất định đã được sửa đổi vào một ngày nhất định

Tôi đang sử dụng

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

để sửa đổi các tệp trong vòng 28 ngày qua, nhưng tôi chỉ cần các tệp đã được sửa đổi vào ngày sau: 2011-02-08

Câu trả lời:


22

Trên các phiên bản gần đây của find(ví dụ GNU 4.4.0), bạn có thể sử dụng -newermttùy chọn. Ví dụ: để tìm tất cả các tệp đã được sửa đổi vào ngày 2011/02/08

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

Cũng lưu ý rằng bạn không cần phải chuyển sang grep để tìm tệp php vì find có thể làm điều đó cho bạn trong -nametùy chọn.

Hãy xem câu trả lời SO này để có thêm gợi ý: Cách sử dụng 'find' để tìm kiếm các tệp được tạo vào một ngày cụ thể?


4

Khó chịu, không có cách nào trực tiếp với tiêu chuẩn find. Các phiên bản gần đây của findhệ thống GNU (ví dụ: Linux không nhúng, Cygwin) và một số * BSD có các tùy chọn như -newermtso sánh ngày của tệp với ngày được đánh vần .

Với tiêu chuẩn find, tất cả những gì bạn có thể làm là so sánh ngày của tệp với ngày hiện tại ( -mtime) hoặc với một tệp cố định. Ngày hiện tại thường không hữu ích trong trường hợp này (nó tính lại từ thời điểm bạn chạy findlệnh, trong khi hầu hết các ứng dụng yêu cầu ngày theo lịch). Điều đó khiến bạn không có khả năng tạo các tệp tạm thời để xác định một phạm vi.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

2

Bạn đã có lệnh gần như đúng, đối với các phiên bản findsẽ không cho phép bạn sử dụng ngày:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

Nói chung, for find- n có nghĩa là ít hơn , n có nghĩa là bằng nhau , + n có nghĩa là "nhiều hơn". Truyền thống findcó một số ngoại lệ, nhưng GNU findvà các phiên bản mới hơn khác như trên BSD / Mac OS X đã sửa các lỗi đó. (Hãy ghi nhớ điều này nếu bạn từng thấy mình trên Solaris hoặc hệ thống Unix thương mại khác.)


1

Với zshbạn có thể sử dụng chức năngage để chỉ in tên của các tệp đã được sửa đổi vào một ngày nhất định:

tuổi tự động tải
in -rl - * .php (.e: tuổi 2011/02/08 :)

hoặc, nếu bạn muốn tìm kiếm đệ quy:

tuổi tự động tải
setopt Extendedglob
in -rl - ** / *. php (.e: tuổi 2011/02/08 :)
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.