Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
toberkel
- Beiträge: 155
- Registriert: 19.05.2003 08:44:53
- Wohnort: Lummerland
Beitrag
von toberkel » 08.11.2004 09:20:42
hi
ich müsste in den mailboxen der users mails löschen die per imap als gelöscht markiert sind (X-Status: D). das script sucht den anfang und das ende der mail, und falls da dann dieses x-status vorkommt löscht es alles ziwschen anfang und ende. das funktioniert gut, leider nur mit einzelnen dateien. wie bekomme ich sed dazu das ganze /var/spool/mail verzeichniss zu durchsuchen?
der code sieht so aus:
Code: Alles auswählen
%
:t
/From postmaster@<domain>.<tld>/,/---------------------bOuNdArY---------------------/ {
/---------------------bOuNdArY---------------------/!{
$!{
N;
bt
}
}
/X-Status: D/d;
}
wäre dankbar für eure hilfe..
mfg toberkel
--
Rechtschreibfehler dienen der allgemeinen Belustigung,
und sind daher beabsichtigt.
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 08.11.2004 12:49:29
Hab ich das richtig verstanden dass dir eigentlich nur ein
find -type f -exec sed "irgendwelchebefehle" -i {} \;
fehlt?
MfG Peschmà
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
toberkel
- Beiträge: 155
- Registriert: 19.05.2003 08:44:53
- Wohnort: Lummerland
Beitrag
von toberkel » 08.11.2004 14:14:19
kann das grad leider nicht testen, ich muss ja sed so aufrufen:
sed -f <script> mailbox >> mailbox damit er den text wieder in die datei schreibt... geht denn der find befehl so? oder gibt es noch eine elegantere möglichkeit?
mfg toberkel
--
Rechtschreibfehler dienen der allgemeinen Belustigung,
und sind daher beabsichtigt.
-
peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Beitrag
von peschmae » 09.11.2004 10:00:48
Ja, das geht dann so:
find -type f -exec sed -f sedscript.sed -i {} \;
Wobei ich davon ausgehe dass dein Sed -i kann
Das Find ruft einfach Sed für jede Datei auf, wobei {} dann durch den Dateinamen ersetzt wird.
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
toberkel
- Beiträge: 155
- Registriert: 19.05.2003 08:44:53
- Wohnort: Lummerland
Beitrag
von toberkel » 09.11.2004 11:09:03
das hört sich gut an!
aber leider habe ich ein prob.
wenn ich es so aufrufe: sed -f <script> <mailbox> >> <mailbox> sollte es ja in der selben mailbox landen, aber es wird nichts ersetzt.
wenn ich aber sed -f <script> <mailbox> >> <mailbox2> mache, dann geht es...
mfg toberkel
--
Rechtschreibfehler dienen der allgemeinen Belustigung,
und sind daher beabsichtigt.
-
roli
- Beiträge: 3174
- Registriert: 10.09.2003 17:39:58
Beitrag
von roli » 10.11.2004 15:21:30
Hi,
wie waer's denn mit:
Code: Alles auswählen
for datei in /var/spool/mail/*
do
mv $datei $.datei.sic
sed -f <script> $datei.sic >> $datei
done
Dann hast du die alte Version nach der Aenderung immer noch, oder du setzt hier noch ein rm ein.
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"