curl sözdizimi ile birden fazla dosya indirmek


17

Aşağıdaki sözdizimiyle iki dosyayı indirmeye çalışıyorum:

curl -O http://domain/path/to/{file1,file2}

Sorun, yalnızca ilk dosyanın yerel olarak kaydedilmiş olması ve ikincisinin stdout'a yazdırılmasıdır.

Eğer bir eklerseniz -Oiyi çalışır fark :

curl -OO http://domain/path/to/{file1,file2}

Ancak dosya sayısı çok fazla büyürse bu pratik değildir? Örneğin,

curl -O http://domain/path/to/file[1,100]

Sorum şu: curl( tek bir dosya eklemeden) aynı anda birden fazla dosya indirmenin gerçekten bir yolu yok -Omu?


1
Neden for döngüsü veya wget kullanmıyorsunuz?
Rui F Ribeiro

1
@RuiFRibeiro (1) Evet, döngü kullanabilirim. Sadece curlbaşarabilir miyim merak ediyorum . (2) Ben sadece HTTP (ler), FTP protokolleri, örneğin SFTP düşünmüyorum.
Naitree

Yani, bu kadar güçlü bir araç olarak, neden curlbu kadar zor olmayan işlevsellikte başarısız oluyor?
Naitree

1
Sadece {}ve [](ve ayrıca *ve ?) sözdiziminin kabuk globbing / genişleme curlolduğunu curl url1 url2
netleştirmek

wget SSL işlemez
MikeW

Yanıtlar:


9

Güncelleme: Bu, 7.19.0 kıvrımında uygulanmıştır. Bkz. @Besworks yanıtı.

Man sayfasına göre, orijinal dosya adını birden fazla O using kullanmak dışında tutmanın bir yolu yoktur. Alternatif olarak kendi dosya adlarınızı da kullanabilirsiniz:

curl http://{one,two}.site.com -o "file_#1.txt"

sonuçlanan http://one.site.comkaydediliyor file_one.txtve http://two.site.comkaydediliyor file_two.txt.

hatta birden fazla değişken gibi

curl http://{site,host}.host[1-5].com -o "#1_#2"

sonuçlanan http://site.host1.comkaydediliyor site_1, http://host.host1.comkaydediliyor host_1vb vb.


Veya şöyle bir şey yapabilirsinizcurl -$(printf 'O%.0s' {1..3}) http://domain/path/to/{file1,file2,file3}
Max Coplan


0

Curl ile birden fazla dosya indirmenin alternatif bir yolu var:

urls="firstUrl secondUrl thirdUrl" 
for url in $urls
do
   curl -O "$url"
done

Not : zorunlu alan, farklı URL'leri sınırlamak için kullanılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.