Curl - Dateiliste für parallelen Download

Curl - Dateiliste für parallelen Download

erster Beitrag, tut mir leid, wenn ich hier etwas Chaos angerichtet habe =)

Verwende die 64-Bit-Serverversion von Ubuntu 14.04lts.

Ich habe eine Liste (URL-Liste) mit ausschließlich herunterzuladenden URLs, eine pro Zeile, das sieht folgendermaßen aus:

http://domain.com/teste.php?a=2&b=3&name=1
http://domain.com/teste.php?a=2&b=3&name=2
...
http://domain.com/teste.php?a=2&b=3&name=30000

Wie man sieht, sind in der Datei sehr viele Zeilen (in diesem Fall 30000). Deshalb nutze ich einen Trick, um mehrere URLs gleichzeitig herunterzuladen:

cat url.list | xargs -n 1 -P 10 <<MAGIC COMMAND THAT WILL SAVE ME>>

Das Problem ist, dass ich die Ausgabedatei mit demselben Wert im Namensfeld umbenennen möchte, also etwa: 1.html, 2.html, ..., 30000.html usw., und curl verwenden möchte, um die Größe der Datei auf 50 KB zu begrenzen. Der curl-Befehl sollte also etwa so lauten:

curl -r 0-50000 -L $URL -o $filename.html -a $filename.log

Wie kann ich das machen lassen?

Ich kann die Ausgabe der Pipe analysieren mitecho $URL | sed -n -e 's/^.*name=//p'aber ich weiß nicht, wie ich dies in derselben Zeile verwenden kann, um die Ausgabe einer Pipe in zwei Variablen ($URL und $filename) zu erfassen.

Ich habe dies ohne Erfolg versucht:

cat url.list | xargs -n 1 -P 10 | filename=$(sed -n -e 's/^.*name=//p') ; curl -r 0-50000 -L $URL -o $filename.html -a $filename.log

Vielen Dank im Voraus

Antwort1

seq 50000 |
  parallel -P 10 curl -r 0-50000 -L '"http://domain.com/teste.php?a=2&b=3&name="'{} -o {}.html -a {}.log 

verwandte Informationen