//盗墓者是个丑奴儿
#!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;
运行结果: