随笔-80  评论-24  文章-0  trackbacks-0
比如要对文件夹$base下的所有文件名中包含bbb的文件重命名,将bbb替换为aaa,这里先不考虑处理子文件夹:

for item in `ls $base | grep .*bbb.*` ; do mv $item ${item//bbb/aaa} ; done;

但是如果要递归处理的话就有些麻烦了,需要写递归函数:

 1 #!/bin/sh
 2 
 3 Usage() {
 4     echo "Usage: $0 dir_name"
 5 }
 6 
 7 if [ $# != 1 ] ; then
 8     Usage
 9     exit 1
10 fi
11 
12 rename_recursive() {
13     local base=$1
14     for item in `ls $base`
15     do  
16         item=$base/$item
17         if [ -d $item ] ; then
18             rename_recursive $item
19         fi  
20     done
21 
22     for item in `ls $base | grep .*aaa.*`
23     do  
24         mv $base/$item $base/${item//aaa/bbb}
25     done
26 }
27 
28 dir_name=`dirname $1`/`basename $1`
29 rename_recursive $dir_name

shell脚本不熟练,还是需要多写多读啊!
posted on 2012-07-16 18:08 myjfm 阅读(634) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理