so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

列出某目录下的所有目录并且可以自由控制深度的脚本

#!/bin/bash

[ $# -gt 2 ] && {
    echo "Usage: ${0##*/} <dir=.> <deep=1>"
    exit 1
}

TOP=0
QUEUELIST[${#QUEUELIST[@]}]=`cd ${1:-.};pwd`
DEEPMAX=${2:-1}
DEEP=0
#The number of directories in the upper directory(DEEP-1)
X=1
#The number of directories in the next directory(DEEP+1)
Y=0
#The number of directories scanned in the current directory(DEEP)
Z=0
while [ $TOP -ne ${#QUEUELIST[@]} ]
do
    curdir=${QUEUELIST[$TOP]}
    cd $curdir
    ((TOP++))
   
    for list in `ls`
    do
        if [ -d $list ]
        then
            echo $curdir/$list
            QUEUELIST[${#QUEUELIST[@]}]=$curdir/$list
            ((Y++))
        fi
    done
    ((Z++))
    if [ $Z -eq $X ];then
        ((DEEP++))
        if [ $DEEP -eq $DEEPMAX ];then
            exit 0
        fi
        X=$Y
        Y=0
        Z=0
    fi
done

说明: 其实用find就可以,只要指定-maxdepth即可,这里只为练练手

posted on 2009-07-18 16:44 so true 阅读(311) 评论(0)  编辑  收藏 所属分类: Linux


只有注册用户登录后才能发表评论。


网站导航: