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

Shell 脚本中如何获取 wget 下载的文件名

  •  
  •   Dk2014 · 2017-07-28 23:51:31 +08:00 via Android · 4045 次点击
    这是一个创建于 2463 天前的主题,其中的信息可能已经有所发展或是发生改变。
    wget 下载地址是 api 地址,非真实文件地址
    使用 --content-disposition 可以在 wget 下载的时候自动修改成真实文件名
    已知获取文件名的方法是:
    让 wget 输出日志文件,然后通过 cat log | sed xxx 来获取
    那么有没有更简便的方法呢,baidu+google 都没有找到解决方法,可能是关键词的问题
    7 条回复    2017-07-29 14:07:43 +08:00
    xfspace
        1
    xfspace  
       2017-07-29 00:03:46 +08:00 via Android
    wget -o ?
    Dk2014
        2
    Dk2014  
    OP
       2017-07-29 00:55:24 +08:00 via Android
    @xfspace 要是这么简单我就不会提问了,文件名是从服务端获取,不能本地指定
    cxbig
        3
    cxbig  
       2017-07-29 03:03:59 +08:00
    通常在 HEAD 里有文件名,你试试
    wget --content-disposition URL
    cxbig
        4
    cxbig  
       2017-07-29 03:07:23 +08:00
    我更偏向用 -O 自己指定文件名

    @xfspace 小写的-o 是指定输出 log,大写的-O 是指定输出文件名
    ETiV
        5
    ETiV  
       2017-07-29 03:42:09 +08:00 via iPhone
    先用 curl -I 输出到 stdout 再 grep awk
    oott123
        6
    oott123  
       2017-07-29 09:29:27 +08:00 via Android
    存一个临时目录,下好了 ls 一下就知道文件名了…
    Dk2014
        7
    Dk2014  
    OP
       2017-07-29 14:07:43 +08:00 via Android
    @ETiV 先 curl -sI 再 grep 可以获取到文件名,把这个文件名存到变量里面用不了,但是 echo $变量 是可以显示的,不知道什么原因
    按照 @oott123 所说的先下载,再 ls 把文件名存到变量里面倒是可以用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5408 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 07:27 · PVG 15:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.