2013-07-20 8 views
11

Tôi muốn xóa các tệp cũ hơn 59 phút. Tôi có điều này cho đến thời điểm này:Xóa tệp cũ hơn X phút

find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" -exec rm -f {} \; 

Điều này không có tác dụng và dường như xóa tất cả các tệp. Tôi đã thử nghiệm này nhiều lần và tôi nghĩ rằng vấn đề là để làm với daystart.

Tôi đã đọc trang người đàn ông và dường như thời gian cơ bản vào đầu ngày thay vì từ 24 giờ trước. Nếu đây là trường hợp làm thế nào tôi có thể xóa chính xác các tệp cũ hơn 59 phút? Tôi có cần tính đến daystart và thêm một số phút nữa không?

Ví dụ:

[email protected]:/tmp$ ls -la 
total 8 
drwxrwxrwt 2 root root 4096 Jul 20 14:39 ./ 
drwxr-xr-x 23 root root 4096 Jun 25 18:34 ../ 
-rw-rw-r-- 1 ubuntu ubuntu 0 Jul 20 12:35 a.txt 

Cả các lệnh sau, trả lại hồ sơ:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" 
/tmp/a.txt 

Và:

[email protected]:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*" 
/tmp/a.txt 

Tuy nhiên, các tập tin không phải là phút lớn hơn 659 (10,9 giờ)! Nhưng tại 759 (12,65 giờ), nó không trả lại tập tin nữa?

+0

Nhân tiện. Tôi thích tham số '-delete' thay vì' -exec rm -f {} \; '. – lanes

Trả lời

14

Khi được sử dụng với -mmin, -daystart xuất hiện để tính toán từ số kết thúc ngày hôm nay, không phải là bắt đầu.

Nếu bạn chỉ muốn tìm các tệp được sửa đổi hơn 59 phút trước, bạn không cần tùy chọn đó. -mmin tính từ thời gian hiện tại theo mặc định.

[email protected]:~/testdir$ date 
Sat Jul 20 10:02:20 CDT 2013 
[email protected]:~/testdir$ ls -l 
total 0 
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt 
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +2 -type f 
./a.txt 
[email protected]:~/testdir$ find . -maxdepth 1 -mmin +10 -type f