On 06.Apr 2005 - 22:30:27, Bruno Hertz wrote:
> Andreas Pakulat <[EMAIL PROTECTED]> writes:
> > bin ja nun nicht sooo der Bash-Crack, deswegen erlaube ich mal hier
> > nach Hilfe zu fragen. Folgendes Konstrukt generiert mir meine
> > Mailbox-Liste f�r Mutt und ich w�rd das gerne beschleunigen. Das
> > Problem d�rfte die while-Schleife sein (mutt ist schneller beim
> > starten wenn ich das rausnehme):
> >
> >
> > mailboxes = `find $HOME/.Mail \
> >                     -type d \
> >                     -name "cur" \
> >                     -maxdepth 2 \
> >                     -printf "=%P\n" \
> >             | sed -e "s&/cur$&&" \
> >                     -e "s/ /\\\ /g" \
> >                     -e 's&^\(.*\)$&"\1"&' \
> >             | while read f; do \
> >                     if [[ $( echo $f | egrep -v ".[0-9]{4}-[0-9]{2}") || \
> >                     $(echo $f | egrep $(date +.%Y-%m)) ]] ; then \
> >                             echo $f; \
> >                     fi ; \
> >                     done  \
> >             | sort | xargs echo`
> >
> > Ziel der Schleife ist, nur die "statischen" Maildirs und die
> > dynamischen des aktuellen Monats stehen zu lassen (also f�r April alle
> > <maildir>.Jahr-Monat auszusortieren wo nicht 2005-04 steht)
> 
> OK, das klab�ster ich nicht auseinander.

Ist doch nicht schwer: Das find findet alle Ordner mit Namen "cur" und
maxdepth == 2 (Halt maildir Format) und gibt dann =Ordername/cur
zur�ck. Das sed entfernt dann das cur und escaped die Leerzeichen mit
"\ " und den ganzen String mit "".

> Nur soviel: deine egrep regexps
> lassen sich in sed auch entweder verwenden oder entsprechend �bersetzen.
> Zusammen mit der Tatsache, da� 'sed -n' nicht mehr alle Zeilen printet
> sondern nur die bei denen du ein 'p' Kommando mit einer Bedingung (match)

Mit dem Tipp und ein wenig probieren hab ich jetzt:

mailboxes = `find $HOME/.Mail \
                 -type d \
                 -name "cur" \
                 -maxdepth 2 \
                 -printf "=%P\n" \
            | sed -e "s&/cur$&&" \
                  -e "s/ /\\\ /g" \
                  -e 's&^\(.*\)$&"\1"&' \
                  -e "/$(date +.%Y-%m)/ p" \
                  -e '/.[0-9]\{4\}-[0-9]\{2\}/ ! p' \
                  -n \
            | sort | xargs echo`

Funktioniert super :-)

Danke,

Andreas

-- 
Celebrate Hannibal Day this year.  Take an elephant to lunch.


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

Antwort per Email an