Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68261
  • 博文数量: 9
  • 博客积分: 1430
  • 博客等级: 上尉
  • 技术积分: 112
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-10 21:10
文章分类

全部博文(9)

文章存档

2011年(2)

2010年(4)

2009年(3)

我的朋友

分类: LINUX

2010-07-11 21:24:09

批量重命名文件


批量重命名文件在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) |
给主人留下些什么吧!~~