重定向后如何通过wget下载文件名

时间:2019-04-19 14:32:39

标签: linux redirect wget

我目前正在使用--content-disposition参数检索重定向后提供的文件,因此文件名是正确的文件名(重定向后)

现在如何获取文件名以供以后在Shell脚本中使用?

1 个答案:

答案 0 :(得分:1)

HTTP规范中获取文件名的唯一直接方法是Content-Disposition标头。在没有该标头的情况下,客户端通常会根据请求URI推断文件的名称。

如果使用Wget(假设不存在Content-Disposition头),它将使用原始请求的URI中提到的名称保存文件。例如,如果您使用http://example.com/afile调用Wget从而将您重定向到http://example.com/bfile,则保存的文件将称为afile。这是一种安全措施,可防止恶意服务器覆盖当前目录中的其他重要文件,例如您的.bashrc

您可以使用--trust-server-names选项禁用此行为,在这种情况下,它将保存名称为bfile的文件。

然后是内容处置。 如果已启用并且标头存在,它将用于命名文件。

所有这些都说明文件的最终名称有些难以衡量。最简单的方法是使用-O filename保存文件,因此您知道文件的确切名称。如果您不想这样做,那么最简单的选择就是使用-nv选项调用wget,它会输出如下所示的行:

% wget -nv example.com                                                                                                 
2019-04-20 10:43:48 URL:http://example.com/ [1270/1270] -> "index.html" [1]

您可以解析此输出以获取下载文件的名称。