Saya mencoba mengunduh dua file dengan sintaks berikut:
curl -O http://domain/path/to/{file1,file2}
Masalahnya adalah hanya file pertama yang benar-benar disimpan secara lokal, dan yang kedua hanya dicetak ke stdout.
Saya menyadari bahwa jika saya menambahkannya -O
berfungsi dengan baik:
curl -OO http://domain/path/to/{file1,file2}
Tapi bukankah ini tidak praktis jika jumlah file tumbuh terlalu besar? Sebagai contoh,
curl -O http://domain/path/to/file[1,100]
Pertanyaan saya adalah, apakah benar-benar tidak ada cara untuk mengunduh beberapa file sekaligus curl
(tanpa menambahkan jumlah yang benar -O
)?
curl
bisa mencapainya. (2) Saya mempertimbangkan tidak hanya HTTP, protokol FTP, misalnya SFTP.curl
gagal pada fungsi yang tidak terlalu sulit ini?{}
dan[]
(dan juga*
dan?
) adalah shell globbing / ekspansi,curl
tidak pernah dapat melihatnya, itu sama dengancurl url1 url2
Jawaban:
Pembaruan: Ini telah diterapkan di curl 7.19.0. Lihat jawaban @Besworks.
Menurut halaman manual tidak ada cara untuk menyimpan nama file asli kecuali menggunakan beberapa O's. Atau Anda bisa menggunakan nama file Anda sendiri:
menghasilkan
http://one.site.com
diselamatkanfile_one.txt
danhttp://two.site.com
diselamatkanfile_two.txt
.atau bahkan beberapa variabel suka
mengakibatkan
http://site.host1.com
diselamatkansite_1
,http://host.host1.com
diselamatkanhost_1
dan sebagainya.sumber
curl -$(printf 'O%.0s' {1..3}) http://domain/path/to/{file1,file2,file3}
Saya menyadari bahwa sudah ada jawaban yang diterima untuk pertanyaan ini, tetapi saya merasa saya harus menunjukkan bahwa sebenarnya ada cara untuk melakukan ini.
The
--remote-name-all
pilihan memberitahu curl untuk berperilaku seolah-olah Anda digunakan-O
atau--remote-name
untuk setiap file.https://curl.haxx.se/docs/manpage.html#--remote-name-all
Opsi ini telah tersedia sejak versi 7.19.0
https://curl.haxx.se/changes.html#7_19_0
sumber
Ada cara alternatif untuk mengunduh banyak file dengan curl:
Catatan : ruang wajib digunakan untuk membatasi URL yang berbeda.
sumber