2013-06-27 8 views
16

Il mio requisito è quello di allegare tutti i file .csv in una cartella e inviarli in una sola mail.comando mutt con più allegati in singola mail unix

Ecco quello che hanno provato,

mutt -s "subject" -a *.csv -- [email protected] < subject.txt 

Il comando precedente non funziona (Non è il riconoscimento più file) e gettando l'errore

Error sending message, child exited 67 (User unknown.). 
Could not send the message. 

Poi ho provato ad utilizzare l'opzione multipla -a come segue ,

mutt -s "subject" -a aaa.csv -a bbb.csv -- [email protected] < subject.txt 

Funziona come previsto. Ma questo non è fattibile per 100 file, ad esempio. Dovrei essere in grado di usarlo con maschera di file (come come * .csv per prendere tutti i file CSV). C'è un modo in cui possiamo usare come * .csv in un singolo comando?

Grazie

+1

Quale versione di mutt stai usando? Un comando come il tuo primo tentativo ha funzionato per me con la mia copia compilata da una versione recente del repository mercurial, ma il supporto per quello iniziato con la versione 1.5.15. – qqx

+0

@qqx Oh è? È fantastico allora. Sto usando Mutt 1.4.1 .. – Mari

risposta

21

Mutt non supporta tale sintassi, ma ciò non significa che sia impossibile. Devi solo costruire il comando mutt.

mutt -s "subject" $(printf -- '-a %q ' *.csv) ... 

Il comando in $(...) produce qualcosa di simile:

-a aaa.csv -a bbb.csv -a ... 
+1

grazie mille. "printf - '-a% q' * .csv" lo adoro. – Mari

0

mi sto backslash (\) Inoltre

Daily_Batch_Status{20131003}.PDF 
Daily_System_Monitoring{20131003}.PDF 

printf -- '-a %q ' *.PDF 
-a Daily_Batch_Status \ {20131003 \ }.PDF -a Daily_System_Monitoring \ {20131003 \ }.PDF