2013-04-18 22 views
167

Ví dụ: Máy chủ Mysql đang chạy trên máy Ubuntu của tôi. Một số dữ liệu đã được thay đổi trong 24 giờ qua.Tập lệnh: tìm các tệp đã được thay đổi trong 24 giờ qua

Tập lệnh (Linux) nào có thể tìm thấy các tệp đã bị thay đổi trong 24 giờ qua?

Vui lòng liệt kê tên tệp, kích thước tệp và thời gian sửa đổi.

+1

Bạn có thể sử dụng http://stackoverflow.com/questions/4561895/how-to-recursively-find-the-latest-modified-file-in-a-directory – vaugham

Trả lời

321

Để tìm tất cả các file sửa đổi trong 24 giờ qua (full ngày cuối cùng) trong một thư mục cụ thể nói riêng và của thư mục con:

find /directory_path -mtime -1 -ls 

nên được theo ý thích của bạn

Các - trước 1 là quan trọng - nó có nghĩa là bất cứ điều gì đã thay đổi một ngày hoặc ít hơn trước đây. A + trước 1 thay vào đó sẽ có nghĩa là bất cứ điều gì đã thay đổi ít nhất một ngày trước, trong khi không có gì trước khi 1 có nghĩa là nó đã được thay đổi chính xác một ngày trước, không nhiều, không kém.

+8

tốt đẹp! làm thế nào về 2 giờ qua? – JackWM

+73

sử dụng "-mmin -120" thay vì mtime – Xavjer

+0

cảm ơn câu trả lời của bạn, nhưng tôi muốn nhận được giá trị trả về, nếu lệnh này có một số tệp đã sửa đổi và nếu không? – Spartan

29

Bạn có thể làm điều đó với

find . -mtime 0 

Từ man find:

[The] thời gian vì mỗi tập tin được sửa đổi lần được chia cho 24 giờ qua và bất kỳ còn lại được loại bỏ. Điều đó có nghĩa là để khớp với -mtime 0, một tệp sẽ phải có sửa đổi trong quá khứ ít hơn 24 giờ trước.

5

Lệnh này làm việc cho tôi

find . -mtime -1 -print 
6

Trên các hệ thống GNU tương thích (ví dụ Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more 

này sẽ liệt kê các file và thư mục đã được sửa đổi trong 24 giờ qua (-mtime 0). Nó sẽ liệt kê chúng với thời gian được sửa đổi lần cuối ở định dạng có thể phân loại và có thể đọc được (%T+), theo sau là kích thước tệp (%s), theo sau là tên tệp đầy đủ (%p), được phân tách bằng tab (\t).

2>/dev/null ném đi bất kỳ đầu ra stderr nào, do đó thông báo lỗi không làm mờ các vùng nước; sort -r sắp xếp các kết quả theo lần sửa đổi gần đây nhất trước tiên; và | more liệt kê một trang kết quả cùng một lúc.

+0

Bạn cũng có thể sử dụng '| ít hơn 'thay vì' | hơn nữa, tôi cho là vậy. –

1

Đối với những người khác hạ cánh ở đây trong thời gian tới (bao gồm cả bản thân mình), thêm một lựa chọn -name để tìm các loại tập tin cụ thể, ví dụ: find /var -name "*.php" -mtime -1 -ls

+1

Bạn cần phải bảo vệ * với dấu ngoặc kép, nếu không nó sẽ mở rộng trên dòng lệnh: 'find/var -name" * .php "-mtime -1 -ls' – jytou

3

Một cách khác:

find /<directory> -newermt "-24 hours" -ls 

hay:

find /<directory> -newermt "1 day ago" -ls 

hay:

find /<directory> -newermt "yesterday" -ls 
Các vấn đề liên quan