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: