shell,统计目录下有多少个文件,共计大小、盗墓者是个丑奴儿

//盗墓者是个丑奴儿

#!bin/sh

count_file=0;     //统计文件总个数变量
count_size=0;   //统计文件总大小变量

//作用:累计文件个数,累计文件大小。当openf递归目录append47追加/。合作拼接出文件路径时,将文件路径交给getFile()
getFile(){                   

        count_file=$(($count_file+1));
        count_size=$((`du -b $filename | awk '{print $1}'`+count_size));
}

//shell变量自增:$(($count_file+1))。$((var+1))

//统计文件个数、调用命令:du 。awk  提取du统计大小的第一列。

//du打印 :字节大小    文件名。awk只打印第一列,文件大小

//作用:给文件追加/,拼接出文件路径。获得2个字符串usr与a.out,调用append47。返回字符串/usr/a.out/。如果字符串最后是/则不做改动

append47(){
if [ ${filename: -1} == '/' ];then
        echo $filename;
else
        echo $filename'/';
fi
}

//作用:递归目录。如果是目录继续递归。如果是文件getFile()

openf(){
for i in `ls $filename`
        do

filename=$(append47 $filename);
#echo $filename;

        if [ -d $filename$i ];then
                filename=$filename$i;
                openf $filename;
                filename=$1;
        else
                filename="$filename$i"
                getFile $filename;
                filename=$1;
        fi
        done
}
 

//-e是否存在。-d判断是否是目录。是目录openf否则getFile

if [ -e $1 ];then
        if [ -d $1 ];then
                filename=$1;
#DIR
                openf $filename;
        else
#FILE
                getFile $filename;
        fi
else
        echo 'No Exis PathName';
fi

echo 'count File:'$count_file;
echo 'count File Size:'$count_size;

运行结果:

猜你喜欢

转载自blog.csdn.net/java_dmz/article/details/81191164
今日推荐