Wie mit "mail" Anhänge per Wildcard versenden ?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Sigi44

Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Sigi44 » 27.06.2008 12:21:39

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.

Benutzeravatar
Mike1985
Beiträge: 148
Registriert: 01.05.2005 14:38:11
Wohnort: Lienz / Austria
Kontaktdaten:

Re: Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Mike1985 » 27.06.2008 13:41:07

Es gibt wahrscheinlich schönere Lösungen (geht das mit 'tr' auch?):

Code: Alles auswählen

echo `ls *xy | sed 's/^/-a /g'`
echo mit deinem restlichen mail command ersetzen.

Benutzeravatar
Meillo
Moderator
Beiträge: 9275
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Meillo » 27.06.2008 14:30:58

Mike1985 hat geschrieben:(geht das mit 'tr' auch?)
nein, `tr' ersetzt nur einzelne Zeichen durch andere.

Ein bisschen optimiert und in eine Funktion verpackt:

Code: Alles auswählen

attach() { echo " " `ls "$@" | sed 's/^/-a /'` " ";}
Dann kannst du `mail' so starten:

Code: Alles auswählen

mail -s "some files" `attach *.txt` someone@somemachine
Use ed once in a while!

Sigi44

Re: Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Sigi44 » 08.07.2008 10:04:22

Mike1985 hat geschrieben:

Code: Alles auswählen

echo `ls *xy | sed 's/^/-a /g'`
Prima, Danke!

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')
Hat jemand eine Idee?

Benutzeravatar
Meillo
Moderator
Beiträge: 9275
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Meillo » 08.07.2008 15:29:19

Sigi44 hat geschrieben:Leider funzt das nicht, wenn ein Dateiname Leerzeichen enthält.
Dateinamen mit Leerzeichen muss man in Anführungsstriche setzen, oder die Leerzeichen mit Backslashes escapen.

Somit entweder:

Code: Alles auswählen

echo `ls *xy | sed 's/^/-a "/g; s/$/"/'`
oder:

Code: Alles auswählen

echo `ls *xy | sed 's/^/-a /g; s/ /\\ /g'`
Auf das erweiterte Beispiel kannst du es dann selbst übertragen.
Use ed once in a while!

Sigi44

Re: Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Sigi44 » 10.07.2008 16:02:24

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.

Benutzeravatar
Meillo
Moderator
Beiträge: 9275
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wie mit "mail" Anhänge per Wildcard versenden ?

Beitrag von Meillo » 11.07.2008 08:22:48

Sigi44 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.
stimmt, habe ich beides nicht bemerkt ;-)
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.
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.
Sicherheitshalber könntest du mal noch ein paar mehr Backslashes ausprobieren. Also drei oder vier ... nur für den Fall 8)

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!

Antworten