您的第一个命令应该在没有空格的情况下工作:
curl -T "{file1.txt,file2.txt}" ftp://XXX/ -user YYY
还要注意上面URL中的尾部“ /”。
这是curl关于选项“ -T”的手动输入:
-T,-上传文件
这会将指定的本地文件传输到远程URL。如果指定的URL中没有文件部分,则Curl将附加本地文件名。注意,必须在最后一个目录上使用结尾的/,才能真正向Curl证明没有文件名,或者curl会认为您的最后一个目录名是要使用的远程文件名。这很可能导致上传操作失败。如果在HTTP(S)服务器上使用此命令,则将使用PUT命令。
使用文件名“-”(一个破折号)来使用stdin而不是给定的文件。或者,文件名“。”。可以指定(单个句点)而不是“-”来在非阻塞模式下使用stdin,以允许在上传stdin时读取服务器输出。
您可以在命令行中为每个URL指定一个-T。每个-T + URL对指定要上传的内容以及上传到的位置。curl还支持-T参数的“ globbing”,这意味着您可以使用URL支持的相同URL globbing样式将多个文件上传到单个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。{one,two,three} .com
或者,您也可以使用[]来获取字母数字系列的序列,如下所示:
ftp://ftp.numericals.com/file[1-100].txt
ftp://ftp.numericals.com/file [001-100] .txt (带前导零)
ftp://ftp.letters.com/file[az].txt
[...]
当从命令行提示符处调用使用[]或{}序列时,可能必须将完整的URL放在双引号中,以避免shell干扰它。其他特殊字符也是如此,例如'&','?' 和“ *”。
但是,您可以像这样使用“普通”外壳程序:
curl -T "{$(echo *.txt | tr ' ' ',')}" ftp://XXX/ -user YYY
(最后一个示例可能无法在所有shell中或在任何种类的奇异文件名中都起作用。)
$(perl -e 'print join(",",@ARGV)' *.txt)
将正确处理带有空格的文件名。