在Linux中,我们一般使用mv命令来重命名文件,在重命名单个文件时非常方便。但是,如果我们要重命名一组文件,mv就有点弱了。不过没关系,今天我们就来介绍一个好用的可以实现批量重命名的命令——重命名命令。下面详细介绍一下重命名命令的用法。与mv命令不同,rename命令并不简单地指定新旧文件名。相反,它使用类似于Perl的正则表达式。我们先来看一个例子。$rename's/old/new/'this.old$lsthis*this.new其中s指定我们用第二个字符串替换第一个字符串,从而将this.old更改为this.new。可能有人会问,我们在上面的例子中使用命令mvthis.oldthis.new不是更方便吗?没错,但是这样的命令一次只能重命名一个文件,而我们今天要做的是一次重命名一组文件。如何处理?很简单,看下面这个例子:$ls*.oldreport.oldschedule.oldstats.oldthis.old$rename's/old/new/'*.old$ls*.newreport.newschedule.newstats.oldthis.new可以看出从上面的结果来看,通过这个简单命令的运行,我们可以将当前目录下所有以.old结尾的文件重命名为以.new结尾的文件,简单高效!如果您认为重命名命令仅此而已,那么Tucson模式就被打破了。重命名命令不限于更改文件扩展名,它还可以更改文件名中的任意字符串。例如,如果我们想将名为report.*的文件更改为review.*,我们可以使用以下命令:$rename's/report/review/'*注意,正则表达式中提供的规则可以更改任何文件名部分,无论是文件名还是扩展名。$rename's/123/124/'*$ls*124*status.124report124.txt如果想交互式地使用rename进行重命名,这样可以方便的看到做了哪些修改,从而避免错误的修改,可以使用-v选项。$rename-v's/123/124/'*status.123renamedasstatus.124report123.txtrenamedasreport124.txt-v选项是给你改一个文本的时候预览,改一个文本的时候给你预览,而这个效率更高低。如果我想整体预览,确认没有问题后一次性全部修改,怎么办?我们可以使用-n或--nono选项让重命名命令达到上述要求。$rename-n's/old/save/'*rename(logger.man-old,logger.man-save)rename(lyrics.txt-old,lyrics.txt-save)rename(olderfile-,saverfile-)rename(oldfile,savefile)rename(review.old,review.save)rename(schedule.old,schedule.save)rename(stats.old,stats.save)rename(this.old,this.save)如果你觉得上面的变化没有问题,那么可以去掉-n选项,正式修改文件名。请注意。rename正则表达式中的不是一般的英文句号,而是匹配任意字符的通配符。我们可以参考下面的命令来理解。$rename-n's/.old/.save/'*rename(logger.man-old,logger.man.save)rename(lyrics.txt-old,lyrics.txt.save)rename(review.old,review.save))rename(schedule.old,schedule.save)rename(stats.old,stats.save)rename(this.old,this.save)上面的例子中,不仅.old改成了.save,-old也改成了也为.save更改。如果你想。表示句点,需要加一个\转义符号,即用\。代表英语时期。$rename-n's/\.old/\.save/'*rename(review.old,review.save)rename(schedule.old,schedule.save)rename(stats.old,stats.save)rename(this.old,this.save)要将所有大写字母更改为小写字母,我们可以使用以下命令。$rename-n'y/A-Z/a-z/'W*rename(WARNING_SIGN.pdf,warning_sign.pdf)rename(Will_Gardner_buttons.pdf,will_gardner_buttons.pdf)rename(Wingding_Invites.pdf,wingding_invites.pdf)rename(WOW-buttons.pdf)pdf,wow-buttons.pdf)其中,使用-n预览要进行的更改,使用y更改大小写。在上面的示例中,我们将所有以大写W开头的文件名更改为全部小写。总结如果要重命名单个文件,可以使用mv命令。而如果要重命名一组文件,使用重命名命令更方便。注意,rename命令最好加上-n选项,先预览要修改的地方,确认无误后再重命名,以免发生意外。
