使 wget 合理地重命名现有文件名

使 wget 合理地重命名现有文件名

当使用 的 filename 已经存在时wget,它将文件重命名为filename.extension.1.是否可以将其重命名为filename.1.extension-- 这应该是默认的?

答案1

不。

wget将备份后缀添加到现有文件名,而不尝试解释、解析或以其他方式理解文件名。这也与创建文件备份的其他实用程序的默认行为一致。

编辑器vimemacsnano(可能还有大多数其他编辑器)可以配置为向文件名添加备份后缀(默认情况下~在这三个中)。流编辑器sed可以进行就地编辑,同时使用备份原始内容sed -i.suffix(将添加.suffix到文件名的末尾)。 GNUmvcp实用程序可以进行不同复杂程度的备份,但始终在文件名末尾附加后缀。rsync同样,可以在用更新的文件替换原始文件之前向文件添加后缀。 ETC。

在文件名中间添加备份号是有问题的,尤其是因为文件名可以是任何不包含/.例如,备份号码应该放在哪里,file.tar.gz或者myfile.7如果不是放在最后?

答案2

虽然,一旦下载,您就可以

perl-rename -i "s/(.*)(\.extension)(\.[0-9]+)$/\1\3\2/" *

rename对于您可用的任何版本。

通过perl-rename,使用该-i选项可以避免覆盖现有文件。用于-n进行“试运行”。

答案3

只是想分享我的解决方案:

alias wget='func(){ (wget --tries=0 --retry-connrefused --timeout=30 -O download_pkg.tmp "$1" && mv download_pkg.tmp "${1##*/}") || rm download_pkg.tmp; unset -f func; }; func

它创建一个接收参数“url”的函数,以将文件下载到临时名称。如果成功,则将其重命名为从参数 $1 中使用 ${1##*/} 提取的正确文件名。如果失败,则删除临时文件。如果操作被中止,临时文件将在下次运行时被替换。毕竟, unset -f 在执行别名时删除了函数定义。

相关内容