curl/wget 下载文件后我怎么知道文件名

2015-08-29 22:27:43 +08:00
 iyaozhen

我想知道 curl/wget 下载的文件的文件名。

http://stackoverflow.com/questions/6881034/curl-to-grab-remote-filename-after-following-location 这里介绍的方法是从 header 中获取,但有些下载服务器 header 里面并不包括文件名信息。

比如说我

wget https://update.pushbullet.com/pushbullet_installer.exe

在 shell 脚本中我想获得 “ pushbullet_installer.exe ”, 已备后用。

7926 次点击
所在节点    程序员
22 条回复
lizhenjia569
2021-04-16 23:51:54 +08:00
我也是为了这个搞半天,最终效果还行吧,tee 管道会让下载进度条一行行显示,只能限制输出频率了:
```shell
# sed 命令正则匹配分组引用: https://stackoverflow.com/a/58379307/11687405
# 为了管道传给 sed 的同时下载信息打印到屏幕,使用 tee 命令重定向 stderr: https://stackoverflow.com/a/20553986/11687405
# 添加 wget 参数--progress=dot:giga,避免小文件显示太多信息(显示一个点代表 1MB ): https://stackoverflow.com/a/35427299/11687405
filename=$(wget --progress=dot:giga https://update.pushbullet.com/pushbullet_installer.exe 2>&1 | tee >(cat 1>&2) | sed -nr "s/.* - ‘(.+)’ saved .*/\1/p")
echo 下载好的文件名为:$filename
```
lizhenjia569
2021-04-16 23:55:01 +08:00
我的写法返回的是下载完毕直接返回 wget 保存好的文件名

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

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

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

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

© 2021 V2EX