Andreas Pakulat <[EMAIL PROTECTED]> writes:

> 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 :-)

Kewl :) (aber irgendwie noch immer monstr�s, hehe )

Gruss, Bruno.

Antwort per Email an