Utilisez simplement formail
. formail
est un programme qui peut traiter la boîte aux lettres, exécuter certaines actions pour chaque message dans la boîte aux lettres, séparer les messages, etc.
Plus d'informations :http://www.manpagez.com/man/1/formail/
Si vous souhaitez simplement diviser une boîte aux lettres pour séparer les fichiers, je suggérerais une telle solution :
$ cat $MAIL | formail -ds sh -c 'cat > msg.$FILENO'
De l'homme :
FILENO
While splitting, formail assigns the message number currently
being output to this variable. By presetting FILENO, you can
change the initial message number being used and the width of the
zero-padded output. If FILENO is unset it will default to 000.
If FILENO is non-empty and does not contain a number, FILENO gen-
eration is disabled.
Git (git mailsplit
) peut également le faire. Par exemple,
wget ftp://lists.gnu.org/bug-tar/2014-09
git mailsplit -o. 2014-09
Si vous n'avez pas formail, vous pouvez également utiliser ce oneliner Perl (copié d'ici, et juste testé sur une boîte de réception Thunderbird que j'avais besoin de scinder)
perl -pe 'open STDOUT, ">out".++$n if /^From /' < $IN > before_first
ou, pour avoir des nombres complétés par des 0 :
perl -pe 'open STDOUT, sprintf(">m%05d.mbx", ++$n) if /^From /' < $IN > before-first