rename 批量修改文件名简单用法

  有的时候我们需要批量创建文件做测试,为了做区分,一般只要稍稍动动文件名即可,MV命令既可以移动文件,也是可以修改文件名的,但批量修改文件名MV做不到,此时,我们可以用rename命令批量修改是蛮不错的方法,当然也有其他方法的,具体如下:

语法:

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]  

白话文:rename  参数 需要替换的字符串  含有的原字符替换成目标字符串  指定要改变文件名的文件列表或脚本

常用参数介绍:

-v  显示修改成功的文件名

-n  不执行任何操作,用来测试rename过程,不直接运行,可以查看测试效果后,然后再运行

-f   强制修改已经存在的文件

  Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了,因为Perl版本的支持正则处理,所以功能更加强大,基本上现在linux下默认的rename命令都是Perl版的。

例如:将一下bqh目录下的所有文件名带有"_finished"的去掉。

方法1:用rename命令

rename "_finished" "" *.jpg

方法二:用sed命令

 f=stu_1218_1_finished.jpg

echo $f|sed 's#_finished##g'

mv $f `echo $f|sed 's#_finished##g'`

也可以写个脚本:

#!/bin/sh
for f in `ls *finish*.jpg`
do
 mv $f `echo $f|sed 's#_finished##g'`
done

 也可以用此命令批量替换:

ls|sed -r 's#(^.*)_finished.*$#mv & \1.jpg#'|bash

方法三:用awk命令

ls *.jpg|awk -F "_finished" '{print "mv " $0,$1$2}'|bash

通过以上方法来说,还是rename命令相对简单,可以根据场景需求而选。

posted @ 2018-12-21 23:55  南清风  阅读(3590)  评论(2编辑  收藏  举报