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.

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


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.