关于 OSX 中的 curl 命令批量下载 URL 的问题

2017-05-26 11:09:13 +08:00
 jamfer
我已经把要下载的 url 保存到了 url.txt 中(每行一个地址)

请问一下 OSX shell 里的 curl 如何能实现从这个 url.txt 中逐行下载 url,同时显示下载进度呢?

PS:我知道单条下载并显示进度的命令是 curl -# -O http://xxxxxxxxxxxxxxxxxxxx
4916 次点击
所在节点    问与答
10 条回复
ashfinal
2017-05-26 11:22:32 +08:00
看了下 curl 还真不支持逐行读取下载。不过 wget 肯定是支持的,aria2 应该也没问题。

一定要用 curl 的话,我找到了篇文章: https://crunchify.com/linux-and-curl-how-to-use-bash-to-read-a-file-line-by-line-and-execute-curl-command-to-get-http-result/
jamfer
2017-05-26 11:24:57 +08:00
@ashfinal 恩,大致看了一下,跟我想的差不多,用 shell 遍历然后再逐行下载... 不行的话只能用这个方法了
ashfinal
2017-05-26 11:29:29 +08:00
@jamfer 题目中也没看出非用 curl 的道理呀,为啥不用另外两个呢?
用法我刚确认过了。 都是 wget/aria2c -i url.txt 回车,齐活了。
jamfer
2017-05-26 11:38:02 +08:00
@ashfinal 主要是 OSX 不带 wget (而且我需要监控下载进度)
ashfinal
2017-05-26 11:50:27 +08:00
@jamfer 看了一下,确实 curl 输出信息比较简洁明了。
其它两个虽然也有进度条,但是要显得杂乱点。
SoloCompany
2017-05-26 14:20:36 +08:00
当然是 aria2c 的输出更友好啊,不用担心中断的问题
SoloCompany
2017-05-26 14:20:51 +08:00
curl 你还得手工加上-C -
jamfer
2017-05-26 17:39:28 +08:00
@ashfinal 你好,我现在已经可以用 curl 批量下载文件了
for URL in `cat -n url.txt`; do curl -# -O $URL; done
但是我现在又需要按照 url.txt 的行号来给下载下来的文件重命名,你知道我该怎么改这段命令么?
bugsnail
2017-05-26 18:01:37 +08:00
将 aaa.avi 文件下载到本地并命名为 xxx.avi
curl -o xxx.avi http://xxx.xxxx.xxxx/aaa.avi

中间 xxx 加个循环变量就好了
ashfinal
2017-05-26 20:54:06 +08:00
@jamfer 额 搞定了么?
ROW=0; for URL in `cat url.txt`; do ROW=$(($ROW+1)); curl -# $URL -o $ROW; done

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/363945

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX