知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

linux获取指定目录最大深度(层数)02

发布时间:2014-09-05 15:40:28作者:知识屋


linux获取指定目录最大深度(层数)02
 
相关链接:
linux获取指定目录最大深度(层数)
http://www.zhishiwu.com/os/201211/166205.html
 
脚本名:du_folder4.sh
脚本内容:  www.zhishiwu.com  
 
#!/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的正确性。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜