Xóa một loạt các email bằng cách sử dụng lệnh 'mail'


10

Tôi có khoảng 1k + thư trong hộp thư đến (stdout cronjob cũ). Làm thế nào để tôi xóa chúng hàng loạt?

Tôi đang trên Solaris 8 và tôi chỉ có mailsẵn, không có pinehoặc mutthoặc tương tự "UI" khách hàng dựa trên.

Trợ giúp nội tuyến và trang man chỉ cung cấp d #để xóa một thư cụ thể. Tôi đã thử ví dụ d 1 - 100nhưng không có may mắn. Và tôi không cảm thấy muốn làm d1000 lần.

Bất kỳ ý tưởng làm thế nào để dọn sạch hộp thư đến này? Tôi thực sự muốn thanh lọc tất cả các thư cũ hơn x ngày.

Câu trả lời:


17

Trong khi mailcó thể không có khả năng, và bạn không có pinehoặc muttbạn có thể làmmailx. Và mailxcó thể d 5-10hoặc d *.


2

Nếu bạn muốn thực hiện d 1thông qua d 100, bạn có thể tạo chuỗi lệnh đó và chuyển trực tiếp tới mail:

i=1; while [ $i -le 100 ]; do echo d $i; i=$(($i+1)); done | mail

Tôi không có Solaris ở đây để kiểm tra. Nếu bạn chạy d 1, nó có đánh số lại các email tiếp theo không? Nếu vậy, bạn cần lặp lại hoặc chạy d 1100 lần.
Gilles 'SO- ngừng trở thành ác quỷ'

2

Sau đây sẽ giúp bạn đọc thư trong 1 giây, xóa thư và chuyển sang thư tiếp theo. Nếu tất cả các thư đã bị xóa, vòng lặp sẽ dừng lại.

Bạn muốn thêm thời gian? Thay đổi giấc ngủ thành 2 hoặc nhiều hơn. Muốn nó nhanh hơn? Thay thế giấc ngủ 1 bằng một lệnh giả.

while (echo dq |mail) do sleep 1 ;done
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.