重定向时如何获取具有正确名称的文件?

重定向时如何获取具有正确名称的文件?

因此,在 Google 和超级用户(以及扫描手册页)上搜索了一段时间后,我还是无法找到一个(我认为)应该很简单的答案:

如果你去这里:

http://www.vim.org/scripts/script.php?script_id=2340

并尝试下载主题:

http://www.vim.org/scripts/download_script.php?src_id=9750

就像这样:

wget http://www.vim.org/scripts/download_script.php?src_id=9750

您最终可能会得到一个名为的文件download_script.php?src_id=9750

但我希望它被称为molokai.vim,这就是我使用浏览器下载此文件时会发生的情况。

为了达到预期的效果,我需要为 wget 指定哪些选项?

我也可以接受与 Curl 等效的命令。

答案1

-O file
--output-document=file
   

这些文档将不会写入相应的文件,但会全部连接在一起并写入文件。如果-用作文件,文档将打印到标准输出,从而禁用链接转换。(用于./-打印到名为的文件-.

所以,

wget -O somefile.extension 'http://www.vim.org/scripts/download_script.php?src_id=9750'

或者,你可能能够wget到达自动地使用服务器建议的文件名使用--content-disposition如果您的版本支持该选项。

wget --content-disposition 'http://www.vim.org/scripts/download_script.php?src_id=9750'

注意事项手册页

--content-disposition

如果将其设置为开启,则将启用对“Content-Disposition”标头的实验性(非全功能)支持。目前,这可能会导致“HEAD”请求与服务器进行额外的往返,并且已知存在一些错误,这就是为什么它目前默认不启用的原因。

该选项对于一些使用“Content-Disposition”标头来描述下载文件的名称的文件下载 CGI 程序很有用。

您可以使用以下方式实现相同的自动化行为curl

curl -JLO 'http://www.vim.org/scripts/download_script.php?src_id=9750'

-O使用远程名称,并-J强制-O从内容处置标头而不是 URL 获取该名称,并-L在需要时遵循重定向。

答案2

使用 wget 你可以执行以下操作:

wget --trust-server-names <url> 

使用服务器提供的最后一个文件名保存文件。

答案3

您还可以使用aria2c- 它似乎与 Content-Disposition 标头配合得很好。

答案4

工作方式如下:

curl -o molokai.vimhttp://www.vim.org/scripts/download_script.php?src_id=9750

wget -O 某个文件.扩展名http://www.vim.org/scripts/download_script.php?src_id=9750

(将大小写改为更小的形式,即(wget -O)改为(wget -o)

相关内容