如何使用wget重命名下载的文件?


78

要从服务器下载SOFA统计信息,请使用wget命令:

wget -c http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

在这种情况下,下载文件的文件名是download?source=files。如果我--output-document在命令中添加选项,则将输出文件重命名为sofastatistics-latest.deb,则dpkg软件包无法识别下载文件的格式。

dpkg-deb: error: `sofastatistics-latest.deb' is not a debian format archive

如何使用wget正确重命名下载的文件?

更新- 151月8日

使用提供的链接,下载的文件将始终是* .tar.gz。要获得真实姓名,只需添加以下--content-disposition选项(感谢@ 6EQUJ5!):

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

但是我需要一个* .deb文件,所以这里是@creaktive,我不得不搜索* .deb文件链接。

感谢所有的答案!


2
如果dpkg这么说,那真的不是Debian存档...怎么file说?
fge

您提到的URL是HTML页面。
Salman A

我认为您接受了错误的答案。
user83039 2015年

@ user83039没错,它是部分的,但是您是对的,我一定不能接受此答案作为正确的答案。
2015年

1
我发现--trust-server-names更适合我的用途。另请参见此重复的SO问题Unix.SE上相同问题
亚当·卡兹

Answers:


110

将标准输出重定向到任意文件名始终有效。正如man wget所说,您使用-O正确完成了操作

wget http://www.kernel.org/pub/linux/kernel/README -O foo
--2013-01-13 18:59:44--  http://www.kernel.org/pub/linux/kernel/README
Resolving www.kernel.org... 149.20.4.69, 149.20.20.133
Connecting to www.kernel.org|149.20.4.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12056 (12K) [text/plain]
Saving to: `foo'

100%[======================================================================================================================================>] 12,056      --.-K/s   in 0.003s  

2013-01-13 18:59:45 (4.39 MB/s) - `foo' saved [12056/12056]

确实,您必须在文件中获取HTML(通常可以通过man文件进行检查)。

[编辑]

在您的情况下,客户端收到302 Found(您可以使用curl -v URL进行检查)。

下面的curl通过尊重3xx来达到目的:

$ curl -L http://sourceforge.net/projects/sofastatistics/files/latest/download?source=files -o foo.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   463    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
100 2035k  100 2035k    0     0   390k      0  0:00:05  0:00:05 --:--:-- 1541k
$ file foo.deb 
foo.deb: gzip compressed data, was "sofastats-1.3.1.tar", last modified: Thu Jan 10 00:30:44 2013, max compression

wget应该有类似的选项来容忍HTTP重定向。


23

如果要从Web浏览器进行相同的下载,并且注意到浏览器实际上正确地命名了文件,则可以使用该--content-disposition选项赋予wget相同的行为:

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

我的Debian手册页将此功能报告为“实验性”功能,但我不记得它对我不起作用:

       --content-disposition
           If this is set to on, experimental (not fully-functional) support for "Content-Disposition" headers is enabled. This can currently result in extra round-trips to the server
           for a "HEAD" request, and is known to suffer from a few bugs, which is why it is not currently enabled by default.

           This option is useful for some file-downloading CGI programs that use "Content-Disposition" headers to describe what the name of a downloaded file should be.

1

该链接指向重定向器,而不是最终目的地!因此,您正在下载HTML并将其重命名为.deb。凌乱的页面顶部有以下内容:

您的下载将在0秒内开始...下载有问题吗?请使用此直接链接,或尝试其他镜像

现在,是一个有效的链接(请注意download前缀):http : //downloads.sourceforge.net/project/sofastatistics/sofastatistics/1.3.1/sofastats-1.3.1-1_all.deb?r=http%3A%2F %2Fsourceforge.net%2Fprojects%2Fsofastatistics%2Ffiles%2Fsofastatistics%2F1.3.1%2F&ts = 1358119361&use_mirror = ufpr

将此网址传递给wget。另外,请注意SourceForge试图超越您,通过User-Agent字符串为操作系统添加操作系统。“ wget”的最佳猜测似乎是.tar.gz软件包。因此,您应该更具体,要求使用deb文件!


该软件有一个.tar.gz版本:sourceforge.net/projects/sofastatistics/files/sofastatistics/…请确保选择.deb链接!
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.