Ваша первая команда должна работать без пробелов:
curl -T "{file1.txt,file2.txt}" ftp://XXX/ -user YYY
Также обратите внимание на завершающий символ "/" в приведенных выше URL.
Это ручная запись curl о опции "-T":
-T, --upload-файл
Это передает указанный локальный файл на удаленный URL. Если в указанном URL нет файловой части, Curl добавит локальное имя файла. Обратите внимание, что вы должны использовать конечный / последний каталог, чтобы действительно доказать Curl, что имя файла отсутствует, или curl подумает, что ваше последнее имя каталога - это имя удаленного файла для использования. Это, скорее всего, приведет к сбою операции загрузки. Если это используется на сервере HTTP (S), будет использоваться команда PUT.
Используйте имя файла «-» (одна черта), чтобы использовать стандартный ввод вместо заданного файла. Альтернативно, имя файла "." (один период) может быть указан вместо «-» для использования stdin в неблокирующем режиме, чтобы разрешить чтение вывода с сервера во время загрузки stdin.
Вы можете указать один -T для каждого URL в командной строке. Каждая пара -T + URL указывает, что загружать и куда. curl также поддерживает «подстановку» аргумента -T, что означает, что вы можете загрузить несколько файлов на один URL-адрес, используя тот же стиль подстановки URL-адреса, поддерживаемый в URL-адресе, например:
curl -T "{file1,file2}" http://www.uploadtothissite.com
или даже
curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
Расширение "* .txt" не работает, потому что curl поддерживает только тот же синтаксис, что и для URL:
Вы можете указать несколько URL или частей URL, написав наборы деталей в фигурных скобках, как показано в:
http: // site . {один, два, три} .com
или вы можете получить последовательности буквенно-цифровых серий, используя [] как в:
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numerics.com/file[001-100].txt (с ведущими нулями)
ftp://ftp.letters.com/file[az].txt
[...]
При использовании последовательностей [] или {} при вызове из командной строки вы, вероятно, должны указывать полный URL-адрес в двойных кавычках, чтобы избежать вмешательства оболочки. Это также относится и к другим символам, которые рассматриваются как специальные, например, '&', '?' и '*'.
Но вы можете использовать «нормальную» оболочку, вот так:
curl -T "{$(echo *.txt | tr ' ' ',')}" ftp://XXX/ -user YYY
(Последний пример может не работать во всех оболочках или с любыми экзотическими именами файлов.)
$(perl -e 'print join(",",@ARGV)' *.txt)
будет правильно обрабатывать имена файлов с пробелами.