Dosyaları bir listeden indirin


130

Dosyaları (bir metin dosyasında listelenen) wgetveya başka bir otomatik yolu kullanarak nasıl indirebilirim ?

Örnek dosya listesi:

www.example.com/1.pdf
www.example.com/2.pdf
www.example.com/3.pdf

Yanıtlar:


227

wget'ın bunun için yerleşik bir bayrağı vardır: wget -i your_list Bu tür şeyleri okuyarak bulabilirsiniz.man wget


@aureianimus 2 bağlantısını atlamak istersem nasıl olur?
alhelal

Bu çözüm benim için çalıştı. Paralel olarak değil sıralı indirmekten mutlu oldum.
asiby

85

Paralel olarak alın

cat urlfile | parallel --gnu "wget {}"

Varsayılan olarak, çekirdekleriniz kadar çok işlem gerçekleştirecektir, paralel olarak "-j 20" ekleyerek bunları hızlı bir şekilde çekmek istiyorsanız, muhtemelen 10 kat daha yükseltin.


1
Ben sadece biri işe yaramadı. Hiçbir
procun

Bazı eski ubuntusların bu alanda aptalca bir kusuru var: stackoverflow.com/questions/16448887/…
meawoppl

2
'Çekirdekleriniz kadar çok işlem yapacaktır' - ağ bant genişliğinin daha sınırlayıcı bir faktör olacağına dikkat edin.
Wilf,

2
Bu gerçekten bağlıdır. Çok sayıda küçük dosya için, aktarım zamanının çoğu el sıkışma / TCP gidiş gelişi olduğundan, bu daha hızlı bir şekilde gerçekleşebilir. Ayrıca, birkaç küçük ana bilgisayardan indirdiğiniz durumda, bazen bağlantı başına bant genişliği sınırlıdır, bu da işleri zorlaştıracaktır.
meawoppl

2
Farklı ana bilgisayar adlarıyla ilgili URL'lerin (ana bilgisayar adları olmayan kaynak kimliği) bir listesini kullanmak istiyorsanız, bu oldukça yararlıdır, örneğin: cat urlfile | paralel --gnu "wget example1.com {}" ve kedi urlfile | paralel --gnu "wget example2.com {}"
Mauricio Sánchez


9

parallelkaynak olarak bir girdi dosyası kullanacak yerleşik bir bayrağı --arg-file( -a) vardır, bu nedenle kaçınabilirsiniz cat |. Kullanabilirsiniz

parallel --gnu -a urlfile wget

Ya da sadece parallel --gnu wget < urlfile


5
awk '{print "http://" $0;}' list.txt | xargs -l1 wget

list.txt, liste dosyanızdır


4

Florian Diesch'in cevabını gördüm.

Parametreyi bqckomuta dahil ederek çalışmaya başladım .

xargs -i wget -bqc 'http://{}' < download.txt

Tüm indirmeler arka planda paralel olarak başladı.

  • -b: Arka fon. Başladıktan hemen sonra arka plana git
  • -q: Sessiz. Wget'ın çıktısını kapat
  • -c: Devam et. Kısmen indirilmiş bir dosyayı almaya devam et

1

Link dosyası links.txt

Tüm bağlantılar dosyasını aşağı yüklemek için komut

cat links.txt | wget -i

3
Bu çalışmıyor. wget -i links.txtdoğru komuttur.
Hery

Hayır bu doğru komut değil. Doğru komut şudur: "cat links.txt | wget -i"
DreamCoder

0

Bunu yeni test ettim:

xargs -a download_file -L1 wget

Benim için çalışıyor. Txt dosyasının içindeki linkler ayrı satırlarda olmalıdı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.