重命名命令不重命名

时间:2016-02-11 19:31:01

标签: perl shell

这应该适用于我的CentOS 6.6但不知何故文件名没有改变。我在这里缺少什么?

rename -f  's/silly//'  sillytest.zi

这应该将sillytest.zi重命名为test.zi,但名称不会更改。当然我可以使用mv命令,但我想应用于许多文件和模式。

1 个答案:

答案 0 :(得分:3)

GNU / Linux系统上常用两种不同的rename实用程序。

util-linux version

在基于Red Hat的系统(例如CentOS)上,renameutil-linux包提供的已编译可执行文件。这是一个使用非常简单的简单程序(来自相关手册页):

rename from to file...
  

rename将通过from替换名称中第一次出现的to来重命名指定的文件。

较新版本还支持有用的-v, --verbose选项。

NB:如果一个文件已经存在,其名称与正在重命名的文件的新名称一致,那么这个rename命令将默默地(没有警告)覆盖前面的现有文件。

实施例

修复HTML文件的扩展名,以便所有.htm个文件都有一个四个字母.html后缀:

rename .htm .html *.htm

问题的例子

要将sillytest.zi重命名为test.zi,请将silly替换为空字符串:

rename silly '' sillytest.zi

Perl版本

在基于Debian的系统上,rename是一个更强大的Perl脚本 因为你得到了Perl丰富的正则表达式的好处。

它的用法是(来自其手册页):

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  

rename根据指定为第一个参数的规则重命名提供的文件名。

rename命令还包含-v, --verbose选项。同样有用的是它的-n, --no-act,它可以用作干运行来查看哪些文件将被重命名。此外,除非使用-f, --force选项,否则不会覆盖预先存在的文件。

实施例

修复HTML文件的扩展名:

rename s/\.htm$/.html/ *.htm