日期:2014-05-16 浏览次数:20787 次
脚本名: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的正确性。