web-dev-qa-db-ja.com

curlとxargsを使用してテキストファイルに保存されている複数のファイルをダウンロードするにはどうすればよいですか?

Curlとxargsを使用してテキストファイルに保存されている複数のファイルをダウンロードするにはどうすればよいですか?これが私の最後の裁判です:

cat listfile.txt | xargs curl -O

最初のファイルは適切に機能しますが、他のファイルはstdoutに出力されるだけです。

7
Eonil

私は解決策を見つけました:

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

xargsはstdinをスペースと改行で分割し、すぐにcurlに渡します。したがって、curlは長い引数を使用して1回だけ呼び出しました。

n1オプションは、この渡される引数の数を1に制限するため、curlは複数回呼び出されます。

2
Eonil

GNU Parallel http://www.gnu.org/software/parallel/ を使用すると、次のことができます。

cat listfile.txt | parallel curl -O

GNU並列では、「」やスペースなどの特殊文字をうまく処理できるだけでなく、並列ダウンロードの利点も得られます。

GNU Parallel: http://www.youtube.com/watch?v=OpaiGYxkSuQ の紹介ビデオを見る

12
Ole Tange

xargsはcurlが何であるかを認識していないため、1ラウンドで渡す引数の数を決定できません。したがって、解決策は、あなたが述べたようにそれに-n1オプションを渡すことです。

0
Zizzencs