如何使用wget更改已下载文件的文件名?

836
我正在从www.examplesite.com/textfile.txt下载文件。
运行以下命令时:
wget www.examplesite.com/textfile.txt

文件已保存为textfile。我该如何将其保存为newfile.txt

73
这句话的意思是“使用wget命令下载文件并将其保存为newfile.txt”。 - Mechanical snail
但是wget -o只会将下载进度作为日志文件输出。我尝试过使用wget -o。 - noobcoder
41
wget -o 会将日志信息输出到一个文件中。wget -O 会输出下载的内容。 man wget 可以告诉你这些以及更多内容。 - Andy Ross
4
AndyRoss说:注意大写字母的使用,它在Unix/Linux领域中通常具有重要意义。 - tink
1
这完全没有回答问题。命令的输出将保存到-o文件中,但文件本身将以相同的名称下载,而不是“另存为”。 - John Mikic
显示剩余3条评论
6个回答

1204
< p>使用 -O 文件 选项。

< p>例如。

wget google.com
...
16:07:52 (538.47 MB/s) - `index.html' saved [10728]

对决。

wget -O foo.html google.com
...
16:08:00 (1.57 MB/s) - `foo.html' saved [10728]

43
Man页面透露:“使用-O选项并不仅仅意味着‘使用名为file的文件替代URL中的文件’;相反,它类似于Shell重定向:'wget -O file http://foo'的意图是像 'wget -O - http://foo > file'一样工作;file将立即被截断,并且所有下载的内容都将写入其中。” - user2913694
1
如何将内容追加到foo.html而不是覆盖它? - Craig Jacobs
4
@CraigJacobs你可以在控制台中使用wget命令并将其附加到文件中。例如,wget -O - -o /dev/null http://google.com >> foo.html参考链接 - Deepak Chaudhary
3
这种方法将使时间戳失效。 - Hamy
1
如果目录不存在,则此命令不会创建文件。 - Freedo
显示剩余3条评论

155

还要注意命令行参数的顺序。 在某些系统上(例如 CentOS 6):

wget -O FILE URL

可以正常工作。但是:

wget URL -O FILE

无法正常工作。


45

您需要使用机械蜗牛列出的命令。 注意大写字母O。 可以使用的完整命令行如下:


您将使用列出的“Mechanical Snail”命令 (注意大写字母 O),完整的命令行如下:
wget www.examplesite.com/textfile.txt --output-document=newfile.txt
或者
wget www.examplesite.com/textfile.txt -O newfile.txt

希望这有所帮助。


1
--output-document=newfile.txt is what worked for me. All attempts to use -O failed with the error Resolving webmin_1.630_all.deb (webmin_1.630_all.deb)... failed: Name or service not known. - KalenGi

30
无论是使用`curl`还是`wget`都可以在这种情况下使用。这三个命令都会执行相同的操作,即下载位于http://path/to/file.txt的文件并将其保存到本地的"my_file.txt"中。
请注意,在下面的所有命令中,我建议您还使用`curl`的`-L`或`--location`选项,以便跟随HTML 302重定向到文件的新位置(如果已经移动)。`wget`不需要额外的选项来自动执行此操作。
# save the file locally as my_file.txt

wget http://path/to/file.txt -O my_file.txt  # my favorite--it has a progress bar
curl -L http://path/to/file.txt -o my_file.txt
curl -L http://path/to/file.txt > my_file.txt

或者,要将文件保存为与远程文件名相同的本地文件,请使用wgetcurl配合-O--remote-name选项。
# save the file locally as file.txt

wget http://path/to/file.txt
curl -LO http://path/to/file.txt
curl -L --remote-name http://path/to/file.txt

注意上面所有命令中的-O都是大写字母"O"。 wget命令的好处是它会显示一个漂亮的进度条。
你可以通过比较它们的sha512哈希值来证明上述3种技术下载的文件完全相同。在运行上述每个命令后,运行sha512sum my_file.txt并比较结果,可以发现这3个文件具有完全相同的sha哈希值(sha校验和),这意味着这些文件是完全相同的,逐字节比对。
参考资料:
  1. 我在这里了解到了使用curl-L选项:有没有办法用命令行cURL跟随重定向?
另请参阅:如何将cURL输出保存到文件中?

25
wget -O yourfilename.zip remote-storage.url/theirfilename.zip

这个技巧对你有用。

注意:

a)那是大写字母O。

b)只有 wget -O filename url 才有效。将-O放在最后是不行的。


12
使用CentOS Linux,我发现最简单的语法是:
wget "link" -O file.ext

在这里,"link"是您想保存的网址,"file.ext"是您选择的文件名和扩展名。

8
两年后用相同的回答回复一个已经回答过的问题,我不理解。 - alegria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接