[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mal wieder find...



Am Sonntag, 29. Februar 2004 11:30 schrieb Andreas Schmidt:
[...]
> Im konkreten Fall ging es darum, in einem Verzeichnis aus allen
> Mailboxen bestimmte Header zu entfernen. Ich hatte dafuer eine
> provisorische ~/.procmailrc angelegt (da die Mails ja schon
> sortiert
>
> waren, konnten die sonst faelligen Filter entfallen) :
> :0f
> :
> | formail -f -I Received: -I Envelope-to: -I Delivered-To:
> |
> :0
> mist

Das schiebt die Mails doch in ein Postfach mist - und der liegt im 
Verzeichnis $MAIL, oder?

> Ich wollte jetzt fuer jede gefundene Mailbox procmail aufrufen
> und die Datei "mist" umbenennen:
>
> find . -maxdepth 1 -type f -exec "cat {} | formail -s procmail;
> mv mist {}.new" \;
>
> Hier gibt es dann die Fehlermeldung:
> find: cat ./header | formail -s procmail; mv mist ./header.new:
> No such file or directory

s. o. - wahrscheinlich wird mist im aktuellen Verzeichnis nicht 
gefunden.

> find . -maxdepth 1 -type f -exec cat \{\} | formail -s procmail;
> mv mist \{\}.new \;
>
> ergibt
> find: missing argument to `-exec'
> mv: missing file argument

Jepp - da Du die Befehlefolge nicht quotest, wird nur der Teil:
cat \{\} für exec erkannt - und da fehlt eben das \; am Ende. Die 
Pipe gehört hier schon nicht mehr zum find.

[...]
> Darauf habe ich dann eine Shell-Funktion definiert:
> prune() {
>     cat "$1" | formail -s procmail
>     mv mist "$1.new"
> }
>
> Der Aufruf dieser Funktion aus find funktioniert nicht:
> find . -maxdepth 1 -type f -exec prune {} \;
> find: prune: No such file or directory
>
> Das liegt wohl daran, dass -exec eine eigene Shell oeffnet, in
> der prune nicht definiert ist. Also im naechsten Schritt:

Sehe ich auch so.

>
> prune () { cat "$1" | formail -s procmail; mv mist "$1.new"; };
> export prune; find . -maxdepth 1 -type f -exec "prune {}" \;
> find: prune ./header: No such file or directory

Kann es sein, dass der Konstrukt "prune {}" als _ein_ Kommando 
aufgefasst wird? Versuchs hier doch mal ohne "" - so wie oben.

> Jetzt bin ich mit meinem Latein am Ende und dankbar fuer jeden
> Hinweis. :-)

Ich glaube. mit einem Shell-Script statt einer Funktion hättest Du 
weniger Sorgen.

Jan



Reply to: