首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux 获取指定索引最大深度(层数)02

2012-11-11 
linux 获取指定目录最大深度(层数)02脚本名:du_folder4.sh脚本内容:?#!/bin/shfolder_name$1if [ ! -d

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

脚本名: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

4test/bbb/aaa/ccc

8test/bbb/aaa

12test/bbb

16test

?

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

热点排行