欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux 获取指定目录最大深度(层数)02 博客分类: linux命令 linuxdepthdu目录层数深度 

程序员文章站 2024-02-24 19:16:58
...

脚本名:du_folder4.sh

脚本内容:

 

#!/bin/sh

folder_name="$1"

if [ ! -d "$folder_name" ];then

echo "The dir(\"${folder_name}\") does not exist!"

exit 3

fi

this_dir_tmp=`pwd`

# ./test(relative path) --->/home/whuang/du_study2/test

folder_name=`echo "$folder_name"|sed "s#^./#$this_dir_tmp/#g"`

 

# test(relative path) --->/home/whuang/du_study2/test

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=$?

                if [ $depth_max -lt $retval ];then

                        depth_max=$retval

                fi

        fi

done

echo "max depth: $depth_max"

 

执行范例:

 

[root@localhost du_study2]# ./du_folder4.sh  /home/whuang/du_study2/test

max depth: 3

[root@localhost du_study2]# ./du_folder4.sh  ./test

max depth: 3

[root@localhost du_study2]# ./du_folder4.sh  test

max depth: 3

[root@localhost du_study2]# du test

4 test/bbb/aaa/ccc

8 test/bbb/aaa

12 test/bbb

16 test

 

说明:可以使用du 命令 来验证脚本du_folder4.sh的正确性。