批量重命名文件
批量重命名文件在linux下有两种方法。第一种是采用for+sed组会,第二种是采用linux自带的命令行rename。
第一种
1、把第一个1个字母变为"X",其它的不变
[cat@cluster3 comments]$ for i in `ls`; do mv -f $i `echo $i | sed 's/^./X/'`; done
或
for file in `ls`
do
newfile=`echo $i | sed 's/^./X/'`
mv $file $newfile
done
2、修改前面5个字母为XXXXXX
[cat@cluster3 comments]$ for i in `ls`; do mv -f $i `echo $i | sed 's/^...../XXXXXX/'`; done
3、修改后面5个字母为XXXXX
[cat@cluster3 comments]$ for i in `ls`; do mv -f $i `echo $i | sed 's/.....$/XXXXX/'`; done
4、加前缀 XXX_
[cat@cluster3 comments]$ for i in `ls`; do mv -f $i `echo "XXX_"$i`; done
5、加后缀 _XXX
[cat@cluster3 comments]$ for i in `ls`; do mv -f $i `echo $i"_XXX"`;
done
6、所有的小写字母变大写字母
[cat@cluster3 comments]$ for i in `ls`; do mv -f $i `echo $i | tr a-z A-Z`; done
7、修改目录下所有的文件
这时候需要和find命令组合
[cat@cluster3 comments]$ for i in `find . -name "*.c"`; do mv -f $i `echo $i"_org"`;
done
[cat@cluster3 comments]$ cat ~/get_rid_comments.sh
#! /bin/bash
for file in `find ciacdynimic -name "*.c"`
do
newfile=`echo ${file}"_org"`
echo ${file} ${newfile}
mv ${file} ${newfile}
~/comments/get_rid_of_comments.x ${newfile} > ${file}
done
第二种
rename是linux自带的一个命令,通常它是一个perl脚本,但在redhat系统中是一个可以执行的elf文件。
用法
批量重命名*.c.txt到*.txt
find yourdir -name '*.c.txt' | xarg rename 's/\.c\.txt$/\.txt/' {}
阅读(1830) | 评论(0) | 转发(0) |