คำสั่งแรกของคุณควรทำงานโดยไม่มีช่องว่าง:
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 กำลังถูกอัปโหลด
คุณสามารถระบุหนึ่ง -T สำหรับแต่ละ URL ในบรรทัดคำสั่ง คู่ -T + URL ระบุว่าจะอัปโหลดและไปยังที่ใด curl ยังรองรับ "globbing" ของอาร์กิวเมนต์ -T ซึ่งหมายความว่าคุณสามารถอัปโหลดไฟล์หลายไฟล์ไปยัง URL เดียวโดยใช้สไตล์ globbing 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.numericals.com/fileuty001-100 Same.txt (พร้อมเลขศูนย์นำหน้า)
ftp://ftp.letters.com/file[az].txt
[ ... ]
เมื่อใช้ลำดับ [] หรือ {} เมื่อเรียกใช้จากพรอมต์บรรทัดคำสั่งคุณอาจต้องใส่ URL แบบเต็มในเครื่องหมายคำพูดคู่เพื่อหลีกเลี่ยงเชลล์จากการแทรกแซง สิ่งนี้จะไปสำหรับตัวละครอื่น ๆ ที่ได้รับการดูแลเป็นพิเศษเช่น '&', '?' และ '*'
แต่คุณสามารถใช้เปลือก "ปกติ" กลมแบบนี้:
curl -T "{$(echo *.txt | tr ' ' ',')}" ftp://XXX/ -user YYY
(ตัวอย่างสุดท้ายอาจใช้ไม่ได้กับเชลล์ทั้งหมดหรือชื่อไฟล์แปลก ๆ )
$(perl -e 'print join(",",@ARGV)' *.txt)
จะจัดการชื่อไฟล์ด้วยช่องว่างได้อย่างถูกต้อง