检测含有关键字的文件的总大小 发表于 2015-01-22 | 分类于 Shell相关 | | 阅读次数 | 字数统计 356 | 阅读时长 2 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102#!/bin/bash #author: QingFeng#qq: 530035210#blog: http://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 $logdirecho "[ $(datef) ] $1" >> $logfiif [[ $is_font -eq 1 ]];thenecho "[ $(datef) ] $1"fi}check_dir(){if [[ ! -d $basedir ]];thenprint_log "[ $(datef) ] 需要检测的目录不存在: $basedir"exitfi} static_sizes(){size=$(du -sh $basedir |awk '{print $1}')print_log "现在该目录[$basedir]的大小为: $size"} jisuan_sum(){if [[ $file_key != "" ]];thenls $basedir/$file_key* |head -n 5 > /dev/nullif [[ $? -ne 0 ]];thenprint_log "现在该目录[$basedir]不存在关键字为$file_key的文件."exitfidu -k $basedir/$file_key* |awk '{print $1}' > /tmp/sum.txtprint_log "开始计算...请稍等"while read line donext=$( echo $line|sed "s/M//g")sum=`expr $sum + $next`done < /tmp/sum.txtrm -f /tmp/sum.txtsum=$(expr $sum / 1000)if [[ $sum -gt 1000 ]];thensumG=$(expr $sum / 1000)elsesumG=0fiprint_log "[$basedir]目录下含有[ $file_key ]关键字的文件大小的总和: $sum M || $sumG G" fi}if [[ "$1" = "" ]];thenecho -e " 检测含有关键字的文件的总大小 用法示例"echo -e "clean.class.sh: ./checksum.class.sh 要检测文件的所在目录 要检测文件的关键词exp: ./checksum.class.sh /data/backup/bdb-log log"exitfi if [[ $1 != "" ]];thenbasedir=$1check_dirif [[ $1 = "/" ]];thenprint_log "第一个参数[检测目录],不能选择根目录"exitfi elseprint_log "第一个参数[检测目录],不能为空"exitfi if [[ $2 != "" ]];thenfile_key=$2fistatic_sizesjisuan_sum 示例结果如下: 坚持原创技术分享,您的支持将鼓励我继续创作! 赏 微信打赏