#!/bin/bash
#author: QingFeng
#qq: 530035210
#blog: https://my.oschina.net/pwd/blog
#检测含有关键字的文件的总大小
logdir=/data/log/clear #日志路径
log=$logdir/clear.log #日志文件
is_font=1 #终端是否打印日志: 1打印 0不打印
is_log=0 #是否记录日志: 1记录 0不记录
datef(){
date "+%Y-%m-%d %H:%M:%S"
}
print_log(){
if [[ $is_log -eq 1 ]];then
[[ -d $logdir ]] || mkdir -p $logdir
echo "[ $(datef) ] $1" >> $log
fi
if [[ $is_font -eq 1 ]];then
echo "[ $(datef) ] $1"
fi
}
check_dir(){
if [[ ! -d $basedir ]];then
print_log "[ $(datef) ] 需要检测的目录不存在: $basedir"
exit
fi
}
static_sizes(){
size=$(du -sh $basedir |awk '{print $1}')
print_log "现在该目录[$basedir]的大小为: $size"
}
jisuan_sum(){
if [[ $file_key != "" ]];then
ls $basedir/$file_key* |head -n 5 > /dev/null
if [[ $? -ne 0 ]];then
print_log "现在该目录[$basedir]不存在关键字为$file_key的文件."
exit
fi
du -k $basedir/$file_key* |awk '{print $1}' > /tmp/sum.txt
print_log "开始计算...请稍等"
while read line
do
next=$( echo $line|sed "s/M//g")
sum=`expr $sum + $next`
done < /tmp/sum.txt
rm -f /tmp/sum.txt
sum=$(expr $sum / 1000)
if [[ $sum -gt 1000 ]];then
sumG=$(expr $sum / 1000)
else
sumG=0
fi
print_log "[$basedir]目录下含有[ $file_key ]关键字的文件大小的总和: $sum M || $sumG G"
fi
}
if [[ "$1" = "" ]];then
echo -e "
检测含有关键字的文件的总大小
用法示例"
echo -e "
clean.class.sh:
./checksum.class.sh 要检测文件的所在目录 要检测文件的关键词
exp:
./checksum.class.sh /data/backup/bdb-log log
"
exit
fi
if [[ $1 != "" ]];then
basedir=$1
check_dir
if [[ $1 = "/" ]];then
print_log "第一个参数[检测目录],不能选择根目录"
exit
fi
else
print_log "第一个参数[检测目录],不能为空"
exit
fi
if [[ $2 != "" ]];then
file_key=$2
fi
static_sizes
jisuan_sum
示例结果如下:
文章作者 | 明哥 |
文章地址 | https://www.pvcreate.com/index.php/archives/29/ |
创建时间 | 2015-01-22 |
关注订阅 | 微信订阅号 |
开源项目 | https://gitee.com/lookingdreamer |
工具市场 | https://gitee.com/lookingdreamer/SPPPOTools |