Eliminar un rango de mensajes de correo electrónico usando el comando 'mail'

10

Tengo alrededor de 1k + correos en una bandeja de entrada (antiguo cronjob stdout). ¿Cómo los elimino en masa?

Estoy en Solaris 8 y solo tengo maildisponible, sin pineo mutto "interfaz de usuario" cliente basado similar.

La ayuda en línea y la página man solo dan d #para eliminar un correo específico. Lo he intentado, por ejemplo, d 1 - 100pero no tuve suerte. Y no tengo ganas de hacerlo d1000 veces.

¿Alguna idea de cómo limpiar esta bandeja de entrada? En realidad, me gustaría purgar todos los correos anteriores a x días.

GWu
fuente

Respuestas:

17

Si bien mailpuede no ser capaz de hacerlo, y que no tienen pineo muttes probable qué tener mailx. Y mailxpuede d 5-10o d *.

bahamat
fuente
2

Si desea ejecutar un d 1paso a través d 100, puede generar esa secuencia de comandos y canalizarla directamente a mail:

i=1; while [ $i -le 100 ]; do echo d $i; i=$(($i+1)); done | mail
Jim Paris
fuente
No tengo Solaris aquí para verificar. Si ejecuta d 1, ¿renumera los correos electrónicos posteriores? Si es así, debe retroceder o correr d 1100 veces.
Gilles 'SO- deja de ser malvado'
2

Lo siguiente lo ayudará a leer los correos durante 1 segundo, eliminar el correo y pasar al siguiente. Si se han eliminado todos los correos, el bucle se detendrá.

¿Quieres un poco más de tiempo? Cambia el sueño a 2 o más. ¿Lo quieres más rápido? Reemplace el sueño 1 por un comando ficticio.

while (echo dq |mail) do sleep 1 ;done
Geert
fuente