Wie mit "mail" Anhänge per Wildcard versenden ?
Wie mit "mail" Anhänge per Wildcard versenden ?
Hallo,
ich möchte gerne alle Dateien die mit xy enden, also *xy mit dem Kommando "mail" als Anhang versenden. Alle Dateien sollen im Anhang einer einzigen Mail sein.
Wie geht das am einfachsten? Jeder Anhang-Datei muss ja unpraktischerweise ein -a vorangestellt werden, "-a *xy" geht leider nicht.
ich möchte gerne alle Dateien die mit xy enden, also *xy mit dem Kommando "mail" als Anhang versenden. Alle Dateien sollen im Anhang einer einzigen Mail sein.
Wie geht das am einfachsten? Jeder Anhang-Datei muss ja unpraktischerweise ein -a vorangestellt werden, "-a *xy" geht leider nicht.
Re: Wie mit "mail" Anhänge per Wildcard versenden ?
Es gibt wahrscheinlich schönere Lösungen (geht das mit 'tr' auch?):
echo mit deinem restlichen mail command ersetzen.
Code: Alles auswählen
echo `ls *xy | sed 's/^/-a /g'`
Re: Wie mit "mail" Anhänge per Wildcard versenden ?
nein, `tr' ersetzt nur einzelne Zeichen durch andere.Mike1985 hat geschrieben:(geht das mit 'tr' auch?)
Ein bisschen optimiert und in eine Funktion verpackt:
Code: Alles auswählen
attach() { echo " " `ls "$@" | sed 's/^/-a /'` " ";}
Code: Alles auswählen
mail -s "some files" `attach *.txt` someone@somemachine
Use ed once in a while!
Re: Wie mit "mail" Anhänge per Wildcard versenden ?
Prima, Danke!Mike1985 hat geschrieben:Code: Alles auswählen
echo `ls *xy | sed 's/^/-a /g'`
Leider funzt das nicht, wenn ein Dateiname Leerzeichen enthält. Auch diese Erweiterung löst das Problem nicht:
Code: Alles auswählen
echo "...anbei" | mail -s Betreff $(ls ~/*xy | sed -e 's/^/-a "/g' -e 's/$/"/g')
Re: Wie mit "mail" Anhänge per Wildcard versenden ?
Dateinamen mit Leerzeichen muss man in Anführungsstriche setzen, oder die Leerzeichen mit Backslashes escapen.Sigi44 hat geschrieben:Leider funzt das nicht, wenn ein Dateiname Leerzeichen enthält.
Somit entweder:
Code: Alles auswählen
echo `ls *xy | sed 's/^/-a "/g; s/$/"/'`
Code: Alles auswählen
echo `ls *xy | sed 's/^/-a /g; s/ /\\ /g'`
Use ed once in a while!
Re: Wie mit "mail" Anhänge per Wildcard versenden ?
Meillo,
Dein erster Lösungsvorschlag entspricht dem von mir geposteten.
Bei Deinem zweiten müssen die beiden sed-Befehle vertauscht werden, da sonst ein -a\ entsteht.
Beide Lösungsvorschläge geben zwar die erwünschte Ausgabe, wenn man damit jedoch mail füttert, werden die Leerzeichen nicht escaped, und es gibt eine Fehlermeldung von wegen Datei nicht gefunden.
Dein erster Lösungsvorschlag entspricht dem von mir geposteten.
Bei Deinem zweiten müssen die beiden sed-Befehle vertauscht werden, da sonst ein -a\ entsteht.
Beide Lösungsvorschläge geben zwar die erwünschte Ausgabe, wenn man damit jedoch mail füttert, werden die Leerzeichen nicht escaped, und es gibt eine Fehlermeldung von wegen Datei nicht gefunden.
Re: Wie mit "mail" Anhänge per Wildcard versenden ?
stimmt, habe ich beides nicht bemerktSigi44 hat geschrieben:Dein erster Lösungsvorschlag entspricht dem von mir geposteten.
Bei Deinem zweiten müssen die beiden sed-Befehle vertauscht werden, da sonst ein -a\ entsteht.
Das darf eigentlich nicht sein. Wenn in der resultierenden Kommandozeile der Dateiname dann in Anführungsstriche steht, oder die Leerzeichen escaped sind, dann ist er (als Ganzes) ein Argument für das entsprechende Programm.Beide Lösungsvorschläge geben zwar die erwünschte Ausgabe, wenn man damit jedoch mail füttert, werden die Leerzeichen nicht escaped, und es gibt eine Fehlermeldung von wegen Datei nicht gefunden.
Sicherheitshalber könntest du mal noch ein paar mehr Backslashes ausprobieren. Also drei oder vier ... nur für den Fall
Sonst könnte es auch sein, dass `mail' intern einfach nicht mit Leerzeichenenthaltenden Dateinamen klar kommt .... das dürfte dann wohl als Bug angesehen werden.
Suche vielleicht auch noch das Internet dazu ab.
Use ed once in a while!