updatedb 发表于 2004-12-1 20:00:35

写一个显示目录的脚本,有点小问题

下面的脚本用于打印目录;如果不指定要打印的目录的话,将从"/"下开始,打印所有的目录

#!/bin/bash
                                                                                 
function isDir() {
   for X in $1/*; do
      if [ -d $X ] ; then
         echo $X
         isDir $X;
      fi;
   done;
}
                                                                                 
isDir $1;


上面的脚本有个bug:(
当目录名中间有空格时,不能找到该目录
修正如下,但仍然出错.请高手修改

#!/bin/bash
                                                                                 
function isDir() {
   for X in $1/*; do
#   Y=`echo $X | sed -e 's/ /\\ /g'`
       Y=`echo $X | sed -e 's/ /\\\\ /g'`    #路径中的空格前加"\",上面两种情况都不行...,echo $Y显示正确,那么-d却底认为$Y是什么东西?
      if [ -d $Y ] ; then
         echo $X
         isDir $X;
      fi;
   done;
}
                                                                                 
isDir $1;

dannycat 发表于 2004-12-1 21:52:07

function isDir() {
   for X in $1/*; do
      if [ -d "$X" ] ; then
         echo $X
         isDir "$X";
      fi;
   done;
}

有什么用? 一个 find -type d 就解决了

updatedb 发表于 2004-12-2 10:15:22

呵呵,没有什么用,也就是那么一回事
试着用不同的方法解决问题而已
显示目录的方法很多种,用find -type d也算是比较复杂啦.....
页: [1]
查看完整版本: 写一个显示目录的脚本,有点小问题