Linux 获取 指定目录 下的 最大子目录深度

命令

function getDirMaxDepth() {
    folder_name="$1"

    if [ ! -d "$folder_name" ];then
        echo "The dir("${folder_name}") does not exist!"
        exit 3
    fi

    this_dir_tmp=`pwd`

    folder_name=`echo "$folder_name"|sed "s#^./#$this_dir_tmp/#g"`
    folder_name=`echo "$folder_name"|sed "s#^([a-zA-Z]+.*)#$this_dir_tmp/1#g"`

    depth_foler()
    {
        this_dir=`pwd`
        source_folder="$1"
        source_folder=`echo $source_folder |sed 's#/$##g'`
        test_folder="$2"

        cd $test_folder
        count=0
        while [ ! `pwd` = $source_folder ]
        do
            count=`expr $count + 1`
            cd ..
        done

        cd $this_dir
        return $count
    }

    target_folder="$folder_name"
    depth_max=1

    for i in `du "$target_folder"` ;do
        if [ -d $i -a ! $i = $target_folder ];then
            depth_foler "$target_folder" "$i"
            retval=$?
            echo "$i : $retval" # 打印每个子目录的深度
            if [ $depth_max -lt $retval ];then
                    depth_max=$retval
            fi
        fi

    done

    echo "max depth: $depth_max"
}

测试

getDirMaxDepth xx
如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。
若在页首无特别声明,本篇文章由 Schips 经过整理后发布。
博客地址:https://www.cnblogs.com/schips/
原文地址:https://www.cnblogs.com/schips/p/linux_bash_get_the_dir_max_depth.html