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

要从服务器下载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重命名下载的文件?

更新 – 1月08 '15

使用提供的链接下载的文件总是一个* .tar.gz之一。 为了得到真正的名字,只需添加--content-disposition选项(感谢@ 6EQUJ5!):

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

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

感谢所有的答案!

标准输出redirect到任意文件名总是起作用。 你正在用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应该有类似的选项来容忍HTTPredirect。

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

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

我的Debian手册页报告这是一个“实验”function,但我不记得它不适合我:

  --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. 

该链接指向redirect器,而不是最终的目的地! 所以你下载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

将此url传递给wget 。 此外,请注意SourceForge试图智取您,通过User-Agentstring访问操作系统。 “wget”的最佳猜测似乎是.tar.gz包。 所以,你应该更具体,请求deb文件!