比如要對文件夾$base下的所有文件名中包含bbb的文件重命名,將bbb替換為aaa,這里先不考慮處理子文件夾:
for item in `ls $base | grep .*bbb.*` ; do mv $item ${item//bbb/aaa} ; done;
但是如果要遞歸處理的話就有些麻煩了,需要寫遞歸函數(shù):
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 閱讀(644)
評論(0) 編輯 收藏 引用