当您使用wget请求文件并且该文件由某个动态页面(例如php)提供服务时,wget将尝试使用该动态页面的路径(通常看起来好像一个生气的孩子抓住了您的键盘: index.php?a8s7df6a8s=d6fa8sd6f90v78wg&l45i87ylqwiu45h=j76h2g461k326v
)。
但是,这些页面通常会在文件中发送HTTP标头,以便用户代理可以显示合理的文件名。如何让wget听取并使用它(而不是url)来确定保存文件的名称?
答案 0 :(得分:1)
我发现这样做的方法是将--server-response
标志与--spider
一起使用并调用wget两次(当然还有改进的余地!)
假设网址位于$link
:
wget --quiet --server-response --spider -O /dev/null -- "$link" 2>&1 \
| sed -n 's/^.*filename=\([^;]*\)\(;.*\)\?$/\1/p' \
| while read name; do
wget -O "$name" -- "$link"
break
done
似乎对我而言就像是一种魅力。
但可能有一种直接的方法。这会(完全不必要地)创建两个到服务器的连接。