Làm thế nào để loại bỏ các tập tin sửa đổi giữa các ngày cụ thể?


12

Như trong chủ đề: Tôi muốn xóa các tệp trong một thư mục đã được sửa đổi trong một phạm vi ngày cụ thể. Tôi có thể làm cái này như thế nào ?

Câu trả lời:


18

Lệnh GNU findlà con đường để đi. Ví dụ: để xóa tất cả các tệp trong thư mục hiện tại trong khoảng từ 1 đến 5 tháng 8, bạn có thể sử dụng lệnh sau

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

-deleteTrước tiên, tốt hơn là thực thi lệnh mà không có hành động, để xem danh sách các tệp quan tâm (một sự thay thế tốt có thể -lstạo ra một danh sách giống như ls).

Loại bỏ -maxdepth 1đặc tả cũng sẽ đi qua tất cả các thư mục con.

Bạn cũng có thể chỉ định giờ, ví dụ

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Được cảnh báo không xóa các dấu ngoặc đơn, bảo vệ khoảng trắng giữa ngày và thời gian.

Các ký tự !là một phủ định, nó nên được đọc: mới hơn ngày này nhưng không mới hơn ngày này.


Cảm ơn đã trả lời. Tôi cũng có thể sử dụng một cái gì đó để chọn phạm vi giờ? Và '!' Là gì được dùng cho ?
Patryk

Có phải !là không. Trong ví dụ này: Không mới hơn 2011-08-06.
con-f-sử dụng

@lordmonkey: xem phần chỉnh sửa của tôi trong câu trả lời
enzotib

3
+1. Tôi không biết vị ngữ -delete. Có lẽ nó không cần thiết, nhưng tôi sẽ thêm -type f.
Michał Šrajer

@ Michał rajer: lời khuyên tốt cho -type f, tôi quên điều đó. Đây -deletelà một phần mở rộng GNU, tôi nghĩ vậy.
enzotib
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.