我基于 fmt
和 xargs
提出了一种解决方案。这个想法是在大括号内指定多个URL,如:http://example.com/page{1,2,3}.html
,然后使用 xargs
并行运行它们。以下命令将启动3个下载进程:
seq 1 50 | fmt -w40 | tr ' ' ',' \
| awk -v url="http://example.com/" '{print url "page{" $1 "}.html"}' \
| xargs -P3 -n1 curl -o
因此,将生成4行可下载的URL,并将其发送到xargs
。
curl -o http://example.com/page{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}.html
curl -o http://example.com/page{17,18,19,20,21,22,23,24,25,26,27,28,29}.html
curl -o http://example.com/page{30,31,32,33,34,35,36,37,38,39,40,41,42}.html
curl -o http://example.com/page{43,44,45,46,47,48,49,50}.html
--range
将单个下载分割成多个,运行多进程 curl,保持块的顺序并在获得有序序列后将它们连接起来,这是大多数开发者正在做的事情(例如: htcat 项目)。 - user257319