Linux学习之关于rename的用法

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命令用法详解(重命名文件)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,198评论 3 53
  • 今天抽到的是金币侍从。 读牌:一个侍从站在一片广阔的草地上凝望着手中的星币,身后是森林和冰川。这个年轻人盯着外部资...
    林小巫阅读 527评论 0 0
  • 1. 带娃上班第一天。以前给她定的几个杂志,还在办公室放着,今天派上了用场,她翻看她的杂志,我做我的工作。 2. ...
    刘金玉阅读 175评论 2 3