我并不完全清楚,但是mv
and rename
(from util-linux-ng 2.17.2
as /usr/bin/rename
)之间有什么区别?除了rename
接受正则表达式之外,是否还有其他优势mv
?我相信rename
也可以一次处理多个文件重命名,mv
而不会这样做。
我无法在他们的man
页面中找到明确的指示,是什么让他们与众不同,或者通过我自己的一些调查。
ilk*_*chu 22
这基本上就是它在盖子上所说的,对于两者。
mv
是一个标准的工具来移动一个或多个文件,以给定的目标。如果只有一个文件要移动,它可用于重命名文件。如果有多个,mv
仅当目标是目录时才有效,并将文件移动到那里。
因此,mv foo bar
要么将文件移动foo
到目录bar
(如果存在),要么重命名foo
为bar
(如果bar
不存在或不是目录)。mv foo1 foo2 bar
只会将两个文件移动到 directory bar
,或者如果bar
不是目录则抱怨。
mv
将调用rename()
C 库函数来移动文件,如果这不起作用(它们被移动到另一个文件系统),它将复制文件并删除原始文件。
如果您所拥有的只是mv
重命名多个文件,则必须使用 shell 循环。有许多对这里的网站上的问题,例如见这个,这个,和其他人。
另一方面,各种rename
实用程序会分别重命名文件。
在rename
从UTIL Linux的其中你提到做一个简单的字符串替换,如rename foo bar *
将改变foobar
到barbar
,并asdffoo
到asdfbar
。它并没有,但是,采取一个正则表达式!
Perl 重命名实用程序(或它的各种实例)采用 Perl 表达式来转换文件名。人们很可能会使用一个命令,其中的模式是一个正则表达式。s/pattern/replacement/
util-linux 重命名和 Perl 重命名都可以通过对文件名进行适当的更改来同时将文件移动到另一个目录,但这有点尴尬。也只是调用rename()
文件,因此从一个文件系统移动到另一个文件系统是行不通的。
至于rename
您拥有哪个,这可能取决于您的发行版和/或您安装的内容。他们中的大多数都支持rename --version
,因此请使用它来确定您拥有哪一个。
归档时间: |
|
查看次数: |
11269 次 |
最近记录: |