文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何列出目录树

如何列出目录树

时间:2008-05-02  来源:剑心通明

下面的短小的shell程序可以列出目录树, 充分利用了sed强大的模式匹配能力.

脚本如下:
#!/bin/sh
# dtree: Usage: dtree [any directory]
dir=${1:-.}
(cd $dir; pwd)
find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"

注:此脚本有点小问题,希望大家还是自己实践一下吧~

下面是改进好的脚本
特别感谢作者:LYOO兄
代码:
#!/bin/bash

redir ()
{
        #tab是真正的步长计算器
        tab=$tab$singletab
        line=${tab%"$singletab"}"|-------"

        #local比较关键,它规定了count是当前的参数列表值
        local count=$#

        for file in "$@"; do
                thisfile=${thisfile:-$PWD}/$file

                #判断当前文件是否为目录,如果是就开始递归   
                if [ -d "$thisfile" ]; then
                        
                        #如果当前目录是分枝列表的最底层,则需进行特殊处理。
                        if [ $count -eq 1 ]; then
                                echo -e $line$file/
                                #将前一个|符号去掉,看看目录树就知道为什么了。
                                tab=${tab%"$singletab"}"\t"
                                redir $(ls $thisfile)
                        else

                                echo -e $line$file/
                                redir $(ls $thisfile)
                        fi
                        
                else
                        echo -e $line$file
                fi
               
                thisfile=${thisfile%/*}
                let count=count-1      
        done
        
        #这一步比较有意思,因为从递归出来的tab结尾可能是TAB也可能是$singletab,所以分成两步来去掉。
        tab=${tab%"\t"}
        tab=${tab%"|"}
        line=${tab%"$singletab"}"|-------"
}

singletab="|\t"
userinput="$@"
if ls $userinput; then

        for file in ${userinput:-.}; do
                echo $file
                echo '|'
                if [ -d "$file" ]; then
                        cd $file
                        redir $(ls)
                        cd ..
                fi
        done
else
        echo "$userinput is wrong"
fi
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载