|
我的想法是在某个目录下,递归删除指定类型的文件,用脚本实现(已经通过命令实现和C语言实现),主要就是练习下脚本的用法
但是脚本的递归出了问题,请教解决方法,谢谢!
解决了!以下是修改好的代码
- #!/bin/bash
- :<<BLOCK
- 代表段注释
- # 时间: 2009.6.8
- # 内容: 递归删除指定类型的文件
- BLOCK
- #+ 只是注释“#+“
- # 只是注释
- echo "Hello everyone!"
- E_WRONG_FILE=2 #定义错误类型
- delfile()
- {
- local filepath=$1; #定义局部变量filepath为传入的文件类型
- echo "begin to search."
- echo "filepath is $filepath"
- #如果为目录则递归处理
- if [ -d $filepath ] ;then
- echo "$filepath is a DIR"
- cd $filepath;
- echo `ls`
- for newpath in `ls`
- do
- echo "newpath is $newpath"
- delfile $newpath $filetype #递归调用delfile函数
- done
- cd ..
- #如果为文件则先判断类型,然后将其删除
- elif [ -f $filepath ]; then
- echo "NOT A DIR :$filepath"
- echo "typelen:$typelen"
- # 从末尾开始截取typelen的长度,如果截取道的字符与filetype一样,即文件类型与要求
- #+ 删除的文件类型相同
- if [ "${filepath:(typelen)}" = "$filetype" ] ; then
- rm -rf $filepath
- echo "$filepath has been removed!"
- fi
- #如果都不是,定义为错误文件
- else
- return $E_WRONG_FILE;
- fi
- }
- #定义typelen为整型数
- declare -i typelen
- #获取所删文件的类型及长度
- filetype=$2
- typelen=${#filetype}
- #typelen表示从末尾开始截取的长度
- typelen=0-typelen
- echo "Starting..."
- delfile $1 $2
- echo "Ending..."
-
复制代码 |
|