Am 2008-11-26 10:28:01, schrieb Tobias Nissen: > Matthias Haegele wrote: > > Habe noch alte Mails der Liste von 2006 und 2007 die könnte ich > > natürlich jetzt von Hand einfach nach Jahreszahl z.B. in einen > > Unterordner debian-2006 verschieben, dabei gingen aber natürlich die > > Threads verloren, was ich nicht möchte, > > Ist das nicht zu perfektionistisch gedacht? Ich habe mir darüber auch > damals[0] Gedanken gemacht, aber das hat doch keinen echten Mehrwert, > oder? Inwiefern? Ich bin am programmieren eines PostgreSQL und GTK2+ basierenden MUA und wenn ich LIMIT zu 2007-10 setze, will ich alles angezeigt haben, was im Oktober relevant war. Dazu gehören aber auch Fäden die im Oktober angefangen haben, aber im November endeten. Nun, ist nicht gerade easy zu programmieren, speziell wenn man dann in einer Tabelle 300.000 Messages hat, aber es geht... > Ich halte ja auch viel von Shell-Programmierung, aber es wird doch > manchmal Zeit loszulassen und eine richtige Sprache zu nehmen :-) Du > kommst bei der Problemstellung nicht drum herum, die Threadbäume einmal > von Hand zu erstellen, weil nicht alle Clients _alle_ References in den > Headern mitführen. Nunja, ich habe das gerade mal ausprobiert... Für den Monat Oktobr benötigt es über eine Stunde auf nem IBM TP570 mit 366 MHz und 192 MByte Speicher Alls erstes muß er alle E-Mails in zwei datei-tabelle schreiben wofür er am besten noch Maildir verwenden muß... ----[ 'table1' ]-------------------------------------------------------- <dateiname> <tab> <YYYY> <tab> <Message-ID> ------------------------------------------------------------------------ ----[ 'table1' ]-------------------------------------------------------- <dateiname> <tab> <References> ------------------------------------------------------------------------ das läßt sich mit einem kleinen BaSH Script und formail sehr schnell erstellen: ----8<------------------------------------------------------------------ #!/bin/bash (cd ${HOME}/Maildir/cur/ && ls *S) | while read LINE do # Ich verwende als Datum den Recived: Header, weil # ich im mehr vertraue, als dem Date: des senders RFC_DATE=$(formail -czx Received: <${LINE} |head -n1 |sed -e 's|.*; ||' |sed 's|^ ||g' |cur -d ' ' -f1-6) YEAR=$(date --date="${RFC_DATE}" +%Y) MSGID=$(formail -czx Message-ID: <${LINE}) REFS=$(formail -czx References: <${LINE}) if [ -z "${MSGID}" ] then MSGID="none" fi echo "${LINE} ${YEAR} ${MSGID}" >>table1 echo "${LINE} ${REFS}" >>table2 done ----8<------------------------------------------------------------------ Danach mit ----8<------------------------------------------------------------------ (cat table1) | while read LINE do FILE=$(echo "${LINE}" |cut -d ' ' -f1) YEAR=$(echo "${LINE}" |cut -d ' ' -f2) ID=$(echo "${LINE}" |cut -d ' ' -f3) mv ${FILE} ${HOME}/Maildir_archive/.${YEAR}/cur/ FILES=$(grep "${ID}" table2) for MOVE in ${FILES} ; do MOVE_FILE=$(echo "${MOVE}" |cut -d ' ' -f1) mv ${MOVE_FILE} ${HOME}/Maildir_archive/.${YEAR}/cur/ done done ----8<------------------------------------------------------------------ Das ist getestet und funktioniert... Thanks, Greetings and nice Day/Evening Michelle Konzack Systemadministrator 24V Electronic Engineer Tamay Dogan Network Debian GNU/Linux Consultant -- Linux-User #280138 with the Linux Counter, http://counter.li.org/ ##################### Debian GNU/Linux Consultant ##################### Michelle Konzack Apt. 917 ICQ #328449886 +49/177/9351947 50, rue de Soultz MSN LinuxMichi +33/6/61925193 67100 Strasbourg/France IRC #Debian (irc.icq.com)
Attachment:
signature.pgp
Description: Digital signature