请问dearvoid,如何遍历当前目录下所有字目录?

请问dearvoid,如何遍历当前目录下所有字目录?

请问dearvoid,如何遍历当前目录下所有字目录?      
复制内容到剪贴板
代码:
$ find . -type d
      
如果不同任何其它工具,只用bash内部命令,能做到吗?      
没问题,你可以自己写一个函数来实现      
比较难!难!      
非也,非也
复制内容到剪贴板
代码:
[color=blue]-(guest@mac:tty1)-(bash)-
[252 0] %[/color] cat find_dir.sh
#! /bin/bash

function finddir()
{
    local d

    echo "$1"
    for d in "$1"/*; do
        [ -d "$d" ] && finddir "$d"
    done
}

finddir "$1"
[color=blue]-(guest@mac:tty1)-(bash)-
[252 0] %[/color] ./find_dir.sh ~/svn/clark/bin
/Users/clark/svn/clark/bin
/Users/clark/svn/clark/bin/apple
/Users/clark/svn/clark/bin/awk
/Users/clark/svn/clark/bin/bash
/Users/clark/svn/clark/bin/conf
/Users/clark/svn/clark/bin/csh
/Users/clark/svn/clark/bin/expect
/Users/clark/svn/clark/bin/perl
/Users/clark/svn/clark/bin/php
/Users/clark/svn/clark/bin/python
/Users/clark/svn/clark/bin/sed
/Users/clark/svn/clark/bin/tcl
/Users/clark/svn/clark/bin/vim
/Users/clark/svn/clark/bin/vivien
/Users/clark/svn/clark/bin/xinetd.d
[color=blue]-(guest@mac:tty1)-(bash)-
[252 1] %[/color]
      
上面的 script 没有考虑以“.”开头的“隐藏”目录,自己试者改一改吧      
实在是妙,我想用栈来实现,看来是复杂了!佩服!      
用 shell 来实现 stack 应该不是很容易      
dearvoid,我用栈实现了目录的遍历!
复制内容到剪贴板
代码:
#!/bin/bash

declare -a dirstack
declare -i top
declare  j
declare -f push
declare -f pop
declare dir
declare mypath
declare list

((top=1))
dir=''
mypath=''

function push()
{
dirstack[$top]=$dir
((top++))
}

function pop()
{
((top--))
dir=${dirstack[$top]}
}
#---------------------------------------------------------
#Main program
if [ $# -eq 1 -a -d $1 ]
then
    mypath="$1/"
    list="$mypath*"
    for i in $list
    do
      if [ -d $i ]
      then
         dir=$i
         push
      fi
    done
    while [ $top -gt 1 ]
    do
      pop
      echo $dir
      mypath="$dir/"
      list="$mypath*"
      for j in $list
      do
        if [ -d $j ]
        then
           dir=$j
           push
        fi
      done
    done
else
    echo "输入目录:"
    exit 1
fi
程序基本运行通过,但还有一点小问题,请dearvoid帮忙!