Verwenden Sie einfach formail
. formail
ist ein Programm, das Mailboxen verarbeiten, einige Aktionen für jede Nachricht in der Mailbox ausführen, Nachrichten trennen kann und so weiter.
Weitere Informationen:http://www.manpagez.com/man/1/formail/
Wenn Sie nur ein Postfach in separate Dateien aufteilen möchten, würde ich eine solche Lösung vorschlagen:
$ cat $MAIL | formail -ds sh -c 'cat > msg.$FILENO'
Von Mann:
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
) kann dies ebenfalls tun. Zum Beispiel
wget ftp://lists.gnu.org/bug-tar/2014-09
git mailsplit -o. 2014-09
Wenn Sie kein Formail haben, können Sie auch diesen Perl-Einzeiler verwenden (von hier kopiert und gerade auf einem Thunderbird-Posteingang getestet, den ich aufteilen musste)
perl -pe 'open STDOUT, ">out".++$n if /^From /' < $IN > before_first
oder um mit 0 aufgefüllte Zahlen zu haben:
perl -pe 'open STDOUT, sprintf(">m%05d.mbx", ++$n) if /^From /' < $IN > before-first