“重命名”和“mv”有什么区别?

Urd*_*rda 15 rename mv

我并不完全清楚,但是mvand rename(from util-linux-ng 2.17.2as /usr/bin/rename)之间有什么区别?除了rename接受正则表达式之外,是否还有其他优势mv?我相信rename也可以一次处理多个文件重命名,mv而不会这样做。

我无法在他们的man页面中找到明确的指示,是什么让他们与众不同,或者通过我自己的一些调查。

ilk*_*chu 22

这基本上就是它在盖子上所说的,对于两者。

mv是一个标准的工具移动一个或多个文件,以给定的目标。如果只有一个文件要移动,它可用于重命名文件。如果有多个,mv仅当目标是目录时才有效,并将文件移动到那里。

因此,mv foo bar要么将文件移动foo到目录bar(如果存在),要么重命名foobar(如果bar不存在或不是目录)。mv foo1 foo2 bar只会将两个文件移动到 directory bar,或者如果bar不是目录则抱怨。

mv将调用rename()C 库函数来移动文件,如果这不起作用(它们被移动到另一个文件系统),它将复制文件并删除原始文件。

如果您所拥有的只是mv重命名多个文件,则必须使用 shell 循环。有许多对这里的网站上的问题,例如见这个这个和其他人


另一方面,各种rename实用程序会分别重命名文件。

rename从UTIL Linux的其中你提到做一个简单的字符串替换,如rename foo bar *将改变foobarbarbar,并asdffooasdfbar它并没有,但是,采取一个正则表达式!

Perl 重命名实用程序或它的各种实例)采用 Perl 表达式来转换文件名。人们很可能会使用一个命令,其中的模式一个正则表达式。s/pattern/replacement/

util-linux 重命名和 Perl 重命名都可以通过对文件名进行适当的更改来同时将文件移动到另一个目录,但这有点尴尬。也只是调用rename()文件,因此从一个文件系统移动到另一个文件系统是行不通的。

至于rename您拥有哪个,这可能取决于您的发行版和/或您安装的内容。他们中的大多数都支持rename --version,因此请使用它来确定您拥有哪一个。