wget:: 如何将所有已下载的文件重命名为 wget --content-disposition 给出的名称?

Posted

技术标签:

【中文标题】wget:: 如何将所有已下载的文件重命名为 wget --content-disposition 给出的名称?【英文标题】:wget:: How to rename all the already dowloaded files as name given by wget --content-dispostion? 【发布时间】:2014-08-31 19:24:24 【问题描述】:

我已经使用wget 下载了 1200 个 jpeg 文件。但是文件的名称是基于下载它们的链接。

例如。 http://www.*.*.*/index.php?id=0MwfTcqbP9dl1_icR3_gVezE8tlpUJt-wumA5hHjpjk 将下载名称为 index.php?id=0MwfTcqbP9dl1_icR3_gVezE8tlpUJt-wumA5hHjpjk.jpg 的文件,但它在服务器上的名称不同。现在我希望所有文件都被命名为服务器上的名称。

一种方法是删除所有文件并使用wget 选项--content-dispostion 重新下载,但下载的总大小为 8GB,再次下载不是一个好的选择。

如何将所有下载的文件重命名为服务器上的名称?

编辑:使用 wget --content-disposition 或浏览器从链接下载的 jpeg 文件的名称类似于 2014:08:09_18:07:51_IMG_5543.jpg(不是由 wget 创建的,它是服务器上的原始名称,上传者的文件名)。我希望将所有文件命名为它们的原始名称,而无需再次下载它们。

【问题讨论】:

可以肯定的是,您知道 sed 和正则表达式吗?你可以重命名所有文件并节省一些时间 我知道正则表达式,我会在实施时尝试学习 sed。但是,如果您了解如何在不下载文件的情况下从服务器检索文件名,那将会很有帮助。 可能是一个误解,但我认为您想摆脱“-”之前文件名中的所有内容 - 那么这可能会有所帮助:***.com/questions/16201134/… 演示链接有答案。 是的,有点误会,我已经对我的问题进行了编辑,看看。原文件名完全不一样,光看链接是不知道的。 如果网络服务器支持 HEAD 请求,你可以使用 wget --server-response --spider $URL 之类的命令,否则你可以使用 0-1 范围仅获取一个字节。得到响应后,您可以编写一个脚本来重命名。 【参考方案1】:

如果网络服务器支持 HEAD 请求,你可以使用wget --server-response --spider $URL 之类的命令,否则你可以使用范围 0-1 只获取一个字节。获得响应后,您可以编写脚本来重命名。 ——吴永正

【讨论】:

以上是关于wget:: 如何将所有已下载的文件重命名为 wget --content-disposition 给出的名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件重命名为子目录

将目录中的所有文件从 $filename_h 重命名为 $filename_half?

wget命令行本地克隆一个网站

如何在 Linux 上将所有文件夹和文件重命名为小写?

将文件重命名为哈希和扩展名

php 将“已完成”订单状态重命名为“已发货”