2010-09-09 22 views

Trả lời

20

Tôi nghĩ rằng sau nên làm những gì bạn muốn:

touch -t 201007010000 dummyfile 
find /path/to/files -type f ! -newer dummyfile -delete 

Dòng đầu tiên tạo ra một tập tin mà được sửa đổi lần trên ngày 01 tháng 7 năm 2010. ngoái Dòng thứ hai tìm thấy tất cả các file trong/path/to/file trong đó có một ngày không mới hơn dummyfile, và sau đó xóa chúng.

Nếu bạn muốn kiểm tra kỹ xem có hoạt động bình thường hay không, hãy bỏ đối số -delete và chỉ nên liệt kê các tệp sẽ bị xóa.

+0

Sau khi thả '-' trước 'f ', nó bây giờ dường như liệt kê tất cả các tập tin. Nếu tôi thả '!' nó chỉ liệt kê các tệp mới hơn. –

+0

Tôi không biết xấu hổ đã đánh cắp/thay đổi câu trả lời từ http://forums.devshed.com/unix-help-35/finding-a-file-modified-created-before-a-specific-date-468700.html – bramp

+1

oh vâng xin lỗi , không nên có -f, chỉ f. – bramp

8

này nên làm việc:

find /file/path ! -newermt "Jul 01" 

Để tìm các tập tin bạn muốn xóa, vì vậy các lệnh để xóa chúng sẽ là:

find /file/path ! -newermt "Jul 01" -type f -print0 | xargs -0 rm 
+0

Eric, phiên bản tìm kiếm nào có "newerct". Tôi không thể tìm thấy được liệt kê trên bất kỳ trang người đàn ông nào. – bramp

+0

@bramp: GNU 'find' có tùy chọn đó. Tuy nhiên, Unix/Linux không có khái niệm về ngày tạo, vì vậy tôi sẽ sử dụng '-newermt'. 'C' là thay đổi trạng thái của inode thay vì" tạo ". –

+0

@Dennis: Cảm ơn bạn đã làm rõ. –

Các vấn đề liên quan