比如要对文件夹$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) 编辑 收藏 引用