LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 729|回复: 1

关于脚本的递归调用,求解[解决]

[复制链接]
发表于 2009-6-8 17:07:41 | 显示全部楼层 |阅读模式
我的想法是在某个目录下,递归删除指定类型的文件,用脚本实现(已经通过命令实现和C语言实现),主要就是练习下脚本的用法
但是脚本的递归出了问题,请教解决方法,谢谢!


解决了!以下是修改好的代码

  1. #!/bin/bash
  2. :<<BLOCK
  3. 代表段注释
  4. # 时间: 2009.6.8
  5. # 内容: 递归删除指定类型的文件
  6. BLOCK
  7. #+ 只是注释“#+“
  8. #  只是注释
  9. echo "Hello everyone!"

  10. E_WRONG_FILE=2 #定义错误类型

  11. delfile()
  12. {

  13.         local filepath=$1; #定义局部变量filepath为传入的文件类型
  14.         echo "begin to search."
  15.         echo "filepath is $filepath"
  16.         #如果为目录则递归处理
  17.         if [ -d $filepath ] ;then
  18.                 echo "$filepath is a DIR"
  19.                 cd $filepath;
  20.                 echo `ls`
  21.                 for newpath in `ls`
  22.                 do
  23.                 echo "newpath is $newpath"
  24.                 delfile $newpath $filetype #递归调用delfile函数
  25.                 done
  26.                 cd ..
  27.         #如果为文件则先判断类型,然后将其删除
  28.         elif [ -f $filepath  ]; then
  29.                 echo "NOT A DIR :$filepath"
  30.                 echo "typelen:$typelen"
  31.                 #  从末尾开始截取typelen的长度,如果截取道的字符与filetype一样,即文件类型与要求
  32.                 #+ 删除的文件类型相同
  33.                 if [ "${filepath:(typelen)}" = "$filetype" ] ; then
  34.                         rm -rf $filepath
  35.                         echo "$filepath has been removed!"
  36.                 fi
  37.         #如果都不是,定义为错误文件
  38.         else
  39.                 return $E_WRONG_FILE;
  40.         fi
  41. }

  42. #定义typelen为整型数
  43. declare -i typelen
  44. #获取所删文件的类型及长度
  45. filetype=$2
  46. typelen=${#filetype}
  47. #typelen表示从末尾开始截取的长度
  48. typelen=0-typelen

  49. echo "Starting..."
  50. delfile $1 $2
  51. echo "Ending..."
  52.          


复制代码
发表于 2009-6-8 17:32:08 | 显示全部楼层
#!/bin/bash
for i in `seq 10`
find youdir  -minpath $i -maxdepath $i ! -type d |xargs rm -rf
你的看你有多少子目录了。就在for循环里指。
文件类型和目录的话可以用file命令过滤出来。思路就是这样了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表