linux shell

Linux学习之关于rename的用法

2016-10-07  本文已影响0人  circle418

linux下的rename是有两个版本的,一个是C语言版本,一个是Perl语言版本,如何判断当前是哪个版本:

输入man rename 看到第一行是:
RENAME(1) Linux Programmer’s Manual RENAME(1)
这个就是C语言版本的,

而如果出现:
RENAME(1) Perl Programmers Reference Guide RENAME(1)
则是Perl版本的了

C语言版本格式:rename 原字符串 新字符串 文件名

example:当前目录下存在两个文件:a_01、a_02,若需要将文件名中的a替换为b,其他部分保持不变则应当键入rename a b a_*代码中最后一个参数代表以a_开头的所有文件

之前一直用这种方法做实验一直不成功,所以上网查询了下,再回去查看了下实验平台所使用的是Perl语言的版本,然后才恍然大悟。下面介绍Perl语言版本的用法。

Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名

example:仍然是刚刚那两个文件:a_01、a_02,若需要将文件名中的a替换为b,其他部分保持不变则应当键入rename 's/a/b/' a_*

Perl版本还有另外一种用法,通过rename 'y/a-z/A-Z/' 文件名来翻转文件名的大小写。

example:比如刚刚那两个文件:a_01、a_02,若需要将文件名中的a翻转为A,则应当键入rename 'y/a-z/A-Z/' a_*

当然不管是哪种方法都支持使用通配符以及正则表达式匹配,例如现在有5个文件file_1,file_2,file_3,file_4,file_5

将五个文件名中的file改成hello:rename 's/f.*e/hello/' file_?其中.是正则表达式中匹配除换行符以外的任意字符,*表示重复0次到多次,f.*e就代表以f开头e结尾的字符串(中间不管多少个字符),是通配符表示可代替单个字符, 值得一提的是*在通配符中表示可代替多个字符

关于更多正则表达式的用法请参考正则表达式

参考资料:linux下rename命令用法详解(重命名文件)

上一篇 下一篇

猜你喜欢

热点阅读