关闭

linux命令之rename

68人阅读 评论(0) 收藏 举报

在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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:332次
    • 积分:25
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章存档