网络上收集的, 谁的都有:
@@@
在当前文件夹中遍历查找所有.txt文件,替换其中的字符串"111"为"222"
find . -name '*.txt' | xargs perl -pi -e 's/111/222/g'
@@@Linux上批量删除.svn目录
find . -type d -name ".svn"|xargs rm -rf
find ./ -type d -name .svn -exec rm -rf {} \;
@@@
批量重命名文件
批量重命名文件在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