Das ist es nicht...hab eben mal ein "touch /var/mail/mist" gemacht, aendert aber nichts an der Fehlermeldung. Ebensowenig eine Aenderung des Pfades zu "mist" ins aktuelle Verzeichnis...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?
Das ist richtig. Habe jetzt mal am Anfang der .procmailrc "VERBOSE=on" gestellt und Logging aktiviert. Dann den Teil mit mv weggelassen:> 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" \;
find: cat ./header | formail -s procmail: No such file or directory
Die Logdatei wird nicht angelegt, was darauf hindeutet, dass formail ueberhaupt nicht ausgefuehrt wird. Kann es sein, dass find den gesamten String "cat ./header | formail -s procmail" als Dateinamen ansieht?
Ist nachvollziehbar. Aber wenn ich quote, wird der Dateiname 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.
prune() { cat $1 | formail -s procmail; }; export prune; find . - maxdepth 1 -type f -exec prune {} \;> 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.
find: prune: No such file or directory
exec mag wohl keine Shell-Funktionen...
War halt nur ein quick'n'dirty hack. :-) Aber Du hast recht, die Funktion in ein Script gepackt wird ausgefuehrt. Und wenn man '"$1"' mit '"$*"' ersetzt, werden sogar Dateinamen mit Leerzeichen richtig erkannt. Letztlich sieht es also wohl danach aus, dass man find wirklich nur ein einzelnes Kommando direkt ausfuehren lassen kann. Aeusserst unpraktisch, wenn man in solchen Faellen jedesmal erst ein eigenes Script schreiben muss...Ich glaube. mit einem Shell-Script statt einer Funktion h�ttest Du weniger Sorgen.
Schoenen Gruss,
Andreas
--
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)

