第一篇文章抱歉,如果我在这里弄乱了=)
使用Ubuntu 14.04lts 64位服务器版本。
我有一个清单(网址列表),只有要下载的 URL,每行一个,如下所示:
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
正如您所看到的,文件中有很多行(在本例中为 30000 行)。因此,我使用了一个技巧来同时下载许多 URL:
cat url.list | xargs -n 1 -P 10 <<MAGIC COMMAND THAT WILL SAVE ME>>
问题是我想使用名称字段的相同值重命名输出文件,例如:1.html,2.html,...,30000.html ecc,并使用curl来限制文件的大小文件大小为 50KB。所以curl命令应该是这样的:
curl -r 0-50000 -L $URL -o $filename.html -a $filename.log
我怎样才能完成它?
我可以解析管道的输出回显 $URL | sed -n -e 's/^.*name=//p'但我不知道如何在同一行中使用它来获取两个变量($URL 和 $filename)中管道的输出。
我尝试了这个但没有成功:
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
先感谢您
答案1
seq 50000 |
parallel -P 10 curl -r 0-50000 -L '"http://domain.com/teste.php?a=2&b=3&name="'{} -o {}.html -a {}.log