在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目录下,则执行
2) 若当前位于test的父目录,则执行
Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名
样例2:题目如样例1,则
1) 若当前位于test目录下,则执行
2) 若当前位于test的父目录,则执行
脚本实现方法:
linux的rename命令
linux正则表达式extensiondoshtml
不同于Dos下的rename命令,linux下的rename命令功能非常强大。
从上面可以看到:
1. rename命令是三个参数
2. rename命令支持通配符进行批量重命名
3. rename命令会不会支持正则表达式
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支持正则表达式
例子: