Frage Laden Sie Dateien von einer Liste herunter


Wie kann ich Dateien herunterladen, die in einer Textdatei aufgelistet sind? wget oder ein anderer automatischer Weg?

Beispiel Dateiliste:

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

110
2018-02-12 16:39


Ursprung




Antworten:


wget hat dafür eine eingebaute Flagge: wget -i your_list Sie können diese Art von Dingen finden, indem Sie lesen man wget


191
2018-02-12 16:56



Warum RTFM wenn du das süße StackExchange Karma bekommen kannst? - spoulson
@aureianimus wenn ich den Link 2 dann überspringen möchte wie? - alhelal
Diese Lösung hat für mich funktioniert. Ich war damit zufrieden, dass es nacheinander und nicht parallel heruntergeladen wurde. - asiby


Bringen Sie sie parallel dazu

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

Standardmäßig werden so viele Prozesse ausgeführt, wie Sie Kerne haben. Sie können diese wahrscheinlich um weitere 10 erhöhen, wenn Sie sie wirklich schnell herunterziehen möchten, indem Sie "-j 20" nach der Parallele hinzufügen.


79
2017-10-17 15:57



Ich bekomme dafür so viele Stimmen. Keine Kommentare, keine Liebe! - meawoppl
Ich für meinen Teil kann es einfach nicht zur Arbeit bringen. Ich sehe keinen proc erzeugt, das Umschalten von Echo für wget gibt nichts aus - Jakub Bochenski
Beachten Sie bei der "es wird so viele Prozesse laufen wie Sie Kerne haben" - Netzwerkbandbreite wird eher ein begrenzender Faktor sein. - Wilf
Es kommt wirklich darauf an. Für eine große Anzahl von kleinen Dateien kann dies fast eine Größenordnung schneller sein, da der Großteil der Übertragungszeit der Handshake / TCP-Umlauf ist. Auch in der Situation, in der Sie von einer Reihe kleinerer Hosts herunterladen, ist die Bandbreite pro Verbindung manchmal begrenzt. - meawoppl
Dies ist sehr nützlich, wenn Sie eine Liste von relativen URLs (Ressourcen-ID ohne Hostnamen) mit unterschiedlichen Hostnamen verwenden möchten, zum Beispiel: cat urfile | parallel --gnu "wget Beispiel1.com{} "und cat urlfile | parallel --gnu" wget beispiel2.com{} " - Mauricio Sánchez


xargs -i wget 'http://{}'  < your_list

9
2018-02-12 16:53





parallel hat eine eingebaute Flagge --arg-file (-a), die eine Eingabedatei als Quelle verwenden, so dass Sie vermeiden können cat |. Sie können verwenden

parallel --gnu -a urlfile wget

Oder einfach parallel --gnu wget < urlfile


7
2018-06-18 12:01





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

wo list.txt ist Ihre Listendatei


5
2018-02-12 16:51





Ich sah Florian Dieschs Antwort.

Ich habe es zur Arbeit gebracht, indem ich den Parameter einschließe bqc im Befehl.

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

Alle Downloads starteten parallel im Hintergrund.

  • -b: Hintergrund. Gehe direkt nach dem Start in den Hintergrund
  • -q: Ruhig. Schalten Sie die Ausgabe von wget aus
  • -c: Fortsetzen. Setzen Sie fort, eine teilweise heruntergeladene Datei zu erhalten

4
2018-05-04 16:56





Verknüpfe Datei links.txt

Befehl zum Herunterladen aller Link-Dateien

    cat links.txt | wget -i

1
2018-05-19 02:54



Das funktioniert nicht. wget -i links.txt ist der richtige Befehl. - Hery
Nein, das ist kein richtiger Befehl. Der richtige Befehl lautet: "cat links.txt | wget -i" - DreamCoder