Wie kann ich mehrere Dateien herunterladen, die in einer Textdatei mit Curl und Xargs gespeichert sind?

7

Wie kann ich mehrere Dateien herunterladen, die in einer Textdatei mit Curl und Xargs gespeichert sind? Dies ist meine letzte Prüfung:

cat listfile.txt | xargs curl -O

Die erste Datei funktioniert gut, aber andere Dateien werden nur an stdout ausgegeben.

Eonil
quelle

Antworten:

12

Mit GNU Parallel http://www.gnu.org/software/parallel/ können Sie Folgendes tun:

cat listfile.txt | parallel curl -O

GNU Parallel kann nicht nur gut mit speziellen Zeichen wie '"und Speicherplatz umgehen, sondern Sie erhalten auch den zusätzlichen Vorteil, dass Sie parallel herunterladen können.

Sehen Sie sich das Intro-Video zu GNU Parallel an: http://www.youtube.com/watch?v=OpaiGYxkSuQ

Ole Tange
quelle
Netter Vorschlag. Aber ich habe keine Zeit, dies zu testen, also +1, und danke!
Eonil
Das ist fantastisch.
Mr.Gando
2

Ich habe eine Lösung gefunden:

cat ./../c | xargs -n1 curl -O

xargs teilt stdin durch Leerzeichen und Zeilenumbrüche auf und krümmt sich sofort. Also Curl nur einmal mit langen Argumenten aufgerufen.

n1 Die Option begrenzt die Anzahl dieser übergebenen Argumente auf 1, sodass Curl mehrmals aufgerufen wird.

Eonil
quelle
0

xargs weiß nicht, was Curl ist, daher kann es nicht bestimmen, wie viele Argumente es in einer Runde übergeben soll. Die Lösung besteht also darin, eine Option -n1 zu übergeben, wie Sie bereits erwähnt haben.

Zizzencs
quelle