Löschen Sie eine Reihe von E-Mail-Nachrichten mit dem Befehl 'mail'


10

Ich habe ungefähr 1k + Mails in einem Posteingang (alter Cronjob Standard). Wie lösche ich sie in großen Mengen?

Ich bin auf dem Solaris 8 und ich habe nur mailsofort verfügbar, keine pineoder muttoder ähnlich „UI“ -basierten Client.

Inline-Hilfe und Manpage geben nur d #zum Löschen einer bestimmten Mail. Ich habe es zum Beispiel versucht, d 1 - 100aber kein Glück. Und ich habe keine Lust d1000-mal zu machen.

Irgendwelche Ideen, wie man diesen Posteingang aufräumt? Ich möchte eigentlich alle Mails löschen, die älter als x Tage sind.

Antworten:


16

Während mailmöglicherweise nicht in der Lage sein, und Sie haben nicht pineoder muttSie wahrscheinlich tun haben mailx. Und mailxkann d 5-10oder d *.


2

Wenn Sie ein d 1Through ausführen möchten d 100, können Sie diese Befehlsfolge generieren und direkt an Folgendes weiterleiten mail:

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

Ich habe hier keine Solaris zu überprüfen. Wenn Sie ausführen d 1, werden nachfolgende E-Mails neu nummeriert? In diesem Fall müssen Sie entweder eine Rückwärtsschleife ausführen oder d 1100 Mal ausführen .
Gilles 'SO - hör auf böse zu sein'

2

Das Folgende hilft Ihnen, die Mails innerhalb von 1 Sekunde zu lesen, die Mail zu löschen und mit der nächsten fortzufahren. Wenn alle Mails gelöscht wurden, stoppt die Schleife.

Willst du noch etwas Zeit? Ändern Sie den Schlaf auf 2 oder mehr. Willst du es schneller? Ersetzen Sie Schlaf 1 durch einen Dummy-Befehl.

while (echo dq |mail) do sleep 1 ;done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.