最初のコマンドは空白なしで動作するはずです:
curl -T "{file1.txt,file2.txt}" ftp://XXX/ -user YYY
上記のURLの末尾の「/」にも注意してください。
これは、オプション「-T」に関するcurlの手動エントリです。
-T、-アップロードファイル
これにより、指定したローカルファイルがリモートURLに転送されます。指定されたURLにファイル部分がない場合、Curlはローカルファイル名を追加します。ファイル名がないことをCurlに実際に証明するには、最後のディレクトリで末尾の/を使用する必要があります。そうしないと、curlは最後のディレクトリ名が使用するリモートファイル名であると見なします。ほとんどの場合、アップロード操作が失敗します。これがHTTP(S)サーバーで使用される場合、PUTコマンドが使用されます。
特定のファイルの代わりにstdinを使用するには、ファイル名 "-"(単一のダッシュ)を使用します。または、ファイル名「。」(単一のピリオド)を「-」の代わりに指定して、非ブロッキングモードでstdinを使用し、stdinのアップロード中にサーバー出力を読み取ることができます。
コマンドラインで、URLごとに1つの-Tを指定できます。-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/
curlはURLと同じ構文しかサポートしていないため、"*。txt"展開は機能しません。
次のように中括弧内にパーツセットを記述することにより、複数の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を二重引用符で囲む必要があります。これは、「&」、「?」など、特別に処理された他の文字にも当てはまります。および「*」。
しかし、次のように「通常の」シェルグロビングを使用できます。
curl -T "{$(echo *.txt | tr ' ' ',')}" ftp://XXX/ -user YYY
(最後の例は、すべてのシェルまたは任意の種類のエキゾチックなファイル名では機能しない場合があります。)
$(perl -e 'print join(",",@ARGV)' *.txt)
スペースを含むファイル名を正しく処理します。