从 Ubuntu 14.04 开始至少有三个rename
命令:
问题:
- 这些命令之间到底有什么区别?
- 为什么会有多个包使用相同的名称提供不同的命令?我想这不是偶然的,不是吗?
perl
软件包要么包含“完整”rename
命令,要么根本不包含任何命令,这不是很简单吗rename
?为什么这种看似不完整的分裂至少持续到 Ubuntu 17.04?
这个问题已经在 U&L 上被问过了(我后来发现):
所有重命名的含义是什么:预命名、重命名、文件重命名?
答案1
为什么有两个包使用相同的名称提供不同的命令(如果不是偶然的话)?
这并不罕见。作者通常会选择他们想到的最简单的命令名称,因此如果两个人编写一个重命名文件的命令,他们很可能都会将其命名为rename
。这就是Debian 替代系统- 它允许提供类似名称命令的软件包共存,并允许一个软件包替换另一个软件包。例如,有多个 AWK 实现 - mawk
、original-awk
、gawk
(尽管它们都称自己为 awk)。使用 alternatives 系统,您可以同时安装它们,并方便地在它们之间切换为默认的awk
。
在这个特定情况下,prename
来自 Perl 源代码。Debian 软件包维护者最初是rename
Perl 维护者,后来切换到替代系统,以适应来自rename
。util-linux
后来有人rename
在文件重命名 Perl 模块,然后作为另一种选择添加。但这甚至不是用于重命名文件的唯一 Perl 模块。
perl
软件包要么包含“完整”rename
命令,要么根本不包含任何命令,这不是很简单吗rename
?为什么这种看似不完整的分裂至少持续到 Ubuntu 17.04?
看Debian 错误 #735134了解这种情况是如何演变的。Debian 维护者通常倾向于在进行一些激烈的改变时至少发布一个版本,例如用另一个命令替换一个工作命令。保留了 jessie 的版本,现在已从 buster 中删除。此外,由于不兼容,prename
它似乎rename
将不再属于替代系统。将只是。rename.ul
rename
file-rename
由于 Ubuntu 通常会从 Debian 中获取打包更改,因此rename
Debian 中发生的变化迟早也会被 Ubuntu 所采用,可能是在 18.04 中。对于 17.10 来说似乎太晚了。
这些命令之间到底有什么区别?
从根本上来说,prename
和都file-rename
运行 Perl 表达式来重命名文件。file-rename
只是积极维护并支持更多选项。而rename
from 的util-linux
工作方式完全不同,有自己的模式规则。