
用法如下:
$ rename [options] [perlexpr] [files]
PS:
(1)options
-v 显示成功重命名的文件-n 只显示将被重命名的文件,但是不进行重命名-f 如果文件已存在,覆盖-e 表明需要需要被执行的code,如果没有-e,那么第一个参数将被当成code。
(2)perlexpr
这是一个Perl表达式,文件名应当在其中被改变,没学过Perl也没关系,这个命令用到的语法很像sed,容易上手。
(3)files
需要重命名的文件。
扩展资料:linux中如何用rename命令重命名一个文件示例:
1、去除文件扩展名
$ rename 's/\.bak$//' *.bak
2、去除文件名中的空格
$ rename 's/ //g' *
3、文件名转为小写
$ rename 'y/A-Z/a-z/' *
4、现在有一堆文件,他们的文件名模式是这样的第一部分-haha-第二部分.file ,现在要把中间的-haha- 删去并把第一部分的字符串和第二部分的字符串对调,可以这样:
$ rename 's/(.*)-haha-(.*)(.file)/$2$1$3/' *.file
Linux下修改文件名有mv和rename。 其中mv命令只能对单个文件重命名 , 这是mv命令和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 原字符串 新字符串 文件名
Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名
rename支持正则表达式
例子:
字母的替换 rename "s/AA/aa/" * // 把文件名中的AA替换成aa
修改文件的后缀 rename "s//.html//.php/" * // 把.html 后缀的改成 .php后缀
批量添加文件后缀 rename "s/$//.txt/" * // 把所有的文件名都以txt结尾
批量删除文件名 rename "s//.txt//" * // 把所有以.txt结尾的文件名的.txt删掉
在文件夹shell下创建文件10个文件
touch tmp_{1..10}.txt
找到含有“_“”的文件夹。
find ./ -name "*_*"
读取id, 用mv改名,$为自己理解为赋值后的id,格式为
可以用脚本实现批量文件名称修改,以perl脚本为例:注释:
1. # touch rename.perl//创建一个文件:rename.perl , 内容如下。
2. # chmod +x rename.perl
3. # cp rename.perl /bin/
4. # rename.perl 's/gongxu/leibie/g' *//将目录中所有文件名中的 gongxu 替换为 leibie。
#!/usr/bin/perl -w
# rename - Larry's filename fixer
#用法: Perl表达式 [要处理的文件名]
$op = shift or die "Usage: rename expr [files]\n"
#如果没有给出要处理的文件名则从标准输入读入
chomp(@ARGV = <STDIN>) unless @ARGV
for (@ARGV) {
$was = $_
eval $op#对待处理的文件名($_)执行用户输入的Perl表达式$op
die $@ if $@#退出 , 如果eval出错
rename($was,$_) unless $was eq $_
}
rename脚本的经典实例示范:
% rename.perl 's/\.orig$//' *.orig #移除文件末尾的.orig
% rename.perl "tr/A-Z/a-z/ unless /^Make/" * #所有非Make打头的文件名大写转为小写
% rename.perl '$_ .= ".bad"' *.f #每个*.f文件后面追加一个.bad
% rename.perl 'print "$_: "s/foo/bar/ if =~ /^y/i' * #回显每个待处理的文件名, 等待输入, 如果用户输入以y或Y打头, 把文件名中的foo替换成bar
% find /tmp -name "*~" -print | rename.perl 's/^(.+)~$/.#$1/' #把 /tmp目录里面每个文件名末尾有~的文件名改成以.#开头
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)