linux命令之rename

在linux系统中重命名文件,经常用到mv命令,批量重命名文件rename是最好的选择。

linux的rename命令有两个版本,一个是c语言版本的,一个是perl语言版本的,判断方法:
输入man rename 看到第一行是: 
RENAME(1) Linux Programmer’s Manual RENAME(1)
这个就是C语言版本的 ---我的就是C语言版本
而如果出现:
RENAME(1) Perl Programmers Reference Guide RENAME(1)
则是Perl版本的了
 
C语言版本格式:rename 原字符串 新字符串 文件名
样例1:目录test下存在两个文件:a_01、a_02,若需要将文件名中的a替换为b,其他部分保持不变,则
1) 若当前位于test目录下,则执行 
 

rename a b *

2) 若当前位于test的父目录,则执行

rename a b test/*

Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名
样例2:题目如样例1,则
1) 若当前位于test目录下,则执行 

rename 's/a/b/' *

2) 若当前位于test的父目录,则执行

rename 's/a/b' test/*

rename的参数
 
rename命令的格式:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
 
第一个参数:被替换掉的字符串
第二个参数:替换成的字符串
第三个参数:匹配要替换的文件模式
 
例子:rename  main1.c main.c main1.c  将main1.c重命名为main.c
 
rename支持通配符
?    可替代单个字符
*    可替代多个字符
[charset]    可替代charset集中的任意单个字符
例子:文件夹中有这些文件foo1, ..., foo9, foo10, ..., foo278 

如果使用      rename foo foo0 foo?
会把foo1到foo9的文件重命名为foo01到foo09,重命名的文件只是有4个字符长度名称的文件,文件名中的foo被替换为foo0。
如果使用      rename foo foo0 foo??
foo01到foo99的所有文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件,文件名中的foo被替换为foo0。
如果使用      rename foo foo0 foo*
foo001到foo278的所有文件都被重命名为foo0001到foo0278,所有以foo开头的文件都被重命名。
如果使用      rename foo0 foo foo0[2]*
从foo0200到foo0278的所有文件都被重命名为foo200到foo278,文件名中的foo0被替换为foo。
 

rename支持正则表达式
例子:

字母的替换rename "s/AA/aa/" *  //把文件名中的AA替换成aa
修改文件的后缀rename "s//.html//.php/" *     //把.html 后缀的改成 .php后缀
批量添加文件后缀rename "s/$//.txt/" * //把所有的文件名都以txt结尾
批量删除文件名rename "s//.txt//" * //把所有以.txt结尾的文件名的.txt删掉


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值