Twoje pierwsze polecenie powinno działać bez białych znaków:
curl -T "{file1.txt,file2.txt}" ftp://XXX/ -user YYY
Zwróć także uwagę na końcowe „/” w powyższych adresach URL.
To jest ręczny wpis curl dotyczący opcji „-T”:
-T, - pobierz plik
To przenosi określony plik lokalny na zdalny adres URL. Jeśli w podanym adresie URL nie ma części pliku, Curl dołączy lokalną nazwę pliku. UWAGA: musisz użyć znaku końca / w ostatnim katalogu, aby naprawdę udowodnić Curlowi, że nie ma nazwy pliku, lub curl pomyśli, że nazwa twojego ostatniego katalogu to zdalna nazwa pliku do użycia. Najprawdopodobniej spowoduje to niepowodzenie operacji przesyłania. Jeśli jest to używane na serwerze HTTP (S), zostanie użyta komenda PUT.
Użyj nazwy pliku „-” (pojedynczy myślnik), aby użyć standardowego wejścia zamiast danego pliku. Alternatywnie nazwa pliku „.” (pojedynczy okres) można określić zamiast „-”, aby używać stdin w trybie nieblokującym, aby umożliwić odczyt danych wyjściowych serwera podczas przesyłania stdin.
Możesz podać jeden -T dla każdego adresu URL w wierszu polecenia. Każda para -T + URL określa, co przesłać i gdzie. curl obsługuje również „globowanie” argumentu -T, co oznacza, że możesz przesłać wiele plików do jednego adresu URL, używając tego samego stylu globowania adresu URL obsługiwanego w adresie URL, na przykład:
curl -T "{file1,file2}" http://www.uploadtothissite.com
lub nawet
curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
Rozszerzenie „* .txt” nie działa, ponieważ curl obsługuje tylko tę samą składnię, co w przypadku adresów URL:
Możesz określić wiele adresów URL lub części adresów URL, pisząc zestawy części w nawiasach klamrowych, jak w:
http: // site . {one, two, three} .com
lub możesz uzyskać sekwencje serii alfanumerycznych, używając [] jak w:
ftp://ftp.numericals.com/file[1-100-100.txt
ftp://ftp.numericals.com/file[001-100-100].txt (z wiodącymi zerami)
ftp://ftp.letters.com/file[az].txt
[...]
Podczas korzystania z sekwencji [] lub {} po wywołaniu z wiersza poleceń, prawdopodobnie musisz umieścić pełny adres URL w cudzysłowie, aby uniknąć zakłóceń powłoki. Dotyczy to również innych znaków traktowanych specjalnie, takich jak na przykład „&”, „?” i '*'.
Ale możesz użyć „normalnego” globowania powłoki w następujący sposób:
curl -T "{$(echo *.txt | tr ' ' ',')}" ftp://XXX/ -user YYY
(Ostatni przykład może nie działać we wszystkich powłokach lub z jakimikolwiek egzotycznymi nazwami plików).
$(perl -e 'print join(",",@ARGV)' *.txt)
poprawnie obsługuje nazwy plików ze spacjami.