V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jamfer
V2EX  ›  问与答

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

  •  
  •   jamfer · 2017-05-26 11:09:13 +08:00 · 4933 次点击
    这是一个创建于 2768 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我已经把要下载的 url 保存到了 url.txt 中(每行一个地址)

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

    PS:我知道单条下载并显示进度的命令是 curl -# -O http://xxxxxxxxxxxxxxxxxxxx
    10 条回复    2017-05-26 20:54:06 +08:00
    ashfinal
        1
    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
        2
    jamfer  
    OP
       2017-05-26 11:24:57 +08:00
    @ashfinal 恩,大致看了一下,跟我想的差不多,用 shell 遍历然后再逐行下载... 不行的话只能用这个方法了
    ashfinal
        3
    ashfinal  
       2017-05-26 11:29:29 +08:00
    @jamfer 题目中也没看出非用 curl 的道理呀,为啥不用另外两个呢?
    用法我刚确认过了。 都是 wget/aria2c -i url.txt 回车,齐活了。
    jamfer
        4
    jamfer  
    OP
       2017-05-26 11:38:02 +08:00
    @ashfinal 主要是 OSX 不带 wget (而且我需要监控下载进度)
    ashfinal
        5
    ashfinal  
       2017-05-26 11:50:27 +08:00
    @jamfer 看了一下,确实 curl 输出信息比较简洁明了。
    其它两个虽然也有进度条,但是要显得杂乱点。
    SoloCompany
        6
    SoloCompany  
       2017-05-26 14:20:36 +08:00
    当然是 aria2c 的输出更友好啊,不用担心中断的问题
    SoloCompany
        7
    SoloCompany  
       2017-05-26 14:20:51 +08:00
    curl 你还得手工加上-C -
    jamfer
        8
    jamfer  
    OP
       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
        9
    bugsnail  
       2017-05-26 18:01:37 +08:00   ❤️ 1
    将 aaa.avi 文件下载到本地并命名为 xxx.avi
    curl -o xxx.avi http://xxx.xxxx.xxxx/aaa.avi

    中间 xxx 加个循环变量就好了
    ashfinal
        10
    ashfinal  
       2017-05-26 20:54:06 +08:00   ❤️ 2
    @jamfer 额 搞定了么?
    ROW=0; for URL in `cat url.txt`; do ROW=$(($ROW+1)); curl -# $URL -o $ROW; done
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3247 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:23 · PVG 20:23 · LAX 04:23 · JFK 07:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.