这应该可以在我的CentOS 6.6上工作,但是不知怎么的,文件名没有被更改。我在这里错过了什么?
rename -f 's/silly//' sillytest.zi这应该将sillytest.zi重命名为test.zi,但名称没有更改。当然,我可以使用mv命令,但我想应用于许多文件和模式。
发布于 2016-02-11 22:56:55
GNU/Linux系统上通常使用两种不同的rename实用程序。
util-linux版本
在基于红帽的系统(如CentOS)上,rename是由util-linux包提供的编译后的可执行文件。这是一个简单的程序,使用非常简单(从相关的手册页面):
rename from to file...
rename将通过用to替换名称中的from的第一次出现来重命名指定的文件。
较新的版本也支持有用的-v, --verbose选项。
NB:如果一个文件的名称与被重命名的文件的新名称重合,那么这个rename命令将悄悄地(没有警告地)重写预先存在的文件。
示例
修正.htm文件的扩展名,以便所有的.html文件都有一个四个字母的.html后缀:
rename .htm .html *.htm问题中的例子
若要将sillytest.zi重命名为test.zi,请用空字符串替换silly:
rename silly '' sillytest.ziPerl版本
在基于Debian的系统上,rename是一个Perl脚本,当您从Perl的丰富的正则表达式集中获益时,它的功能要强得多。
它的用法是(从它的手册页):
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
rename重命名根据指定为第一个参数的规则提供的文件名。
这个rename命令还包括一个-v, --verbose选项。同样有用的是它的-n, --no-act,它可以作为试运行来查看哪些文件将被重命名。另外,除非使用-f, --force选项,否则它不会覆盖预先存在的文件.
示例
修正HTML文件的扩展名:
rename s/\.htm$/.html/ *.htmhttps://stackoverflow.com/questions/35348403
复制相似问题