shell 脚本实现 合并文件夹中的文件为一个文件-自用

 

说明:

webvpndata_tmp目录下会生成多个   1593483512_00001-441_web_3232235974_3396404947_80_443  之类的文件夹 看图1

 

该文件夹下面有从0开始排序的文件,看图2 

最后的结果

将 1593483512_00001-441_web_3232235974_3396404947_80_443  下的文件 0,1,2,3,4 最后合并成

1593483512_00001-441_web_3232235974_3396404947_80_443.txt

 

 

结果 

脚本如下 

 

#!/bin/sh
curdir=/webvpn/
webvpnTmpDir=/webvpndata_tmp/
webvpnDataDir=/webdata/
webvpnDataCopyDir=/webdata_copy/
procname2=merge_webvpn_log.sh

if [ ! -d $webvpnTmpDir ];then
  mkdir $webvpnTmpDir
fi


if [ ! -d $webvpnDataDir ];then
  mkdir $webvpnDataDir
fi


##  以下命令基于输出的第一个字段的第一列(小时的第一个数字)对输出进行排序。
##find . -type f -printf "\n%AT %p" | head -n 2 | sort -k1.1r
function listFiles()
{
        #1st param, the dir name
        #2nd param, the aligning space
        for file in `ls $webvpnTmpDir`;
		##1、遍历 webvpndata_tmp 获取当前目录下的所有文件夹,一个文件夹代表一个完整话单
		##2、遍历每个文件夹下的文件 ,获取最大文件的序号,并获取最新的文件时间大于当前时间1分钟 ,并统计文件序号和数量是否一致。
        do
				 fileNewDate=`find $webvpnTmpDir$file -type f -printf "\n%As" | head -n 2 | sort -k1.1r`

				 current=`date "+%Y-%m-%d %H:%M:%S"`
				 currentTimeStamp=`date -d "$current" +%s` 
				 cTimeStamp=`expr $currentTimeStamp - $fileNewDate `
				 ##mTime=`expr $cTimeStamp / 60`
				 fileCount=`ls $webvpnTmpDir$file  -l|grep "^-"| wc -l`
                 bigNumFileName=`ls  $webvpnTmpDir$file  | sort  -n -r |head -n 1`
				 isTrueSame=$(($bigNumFileName + 1 == $fileCount))
                if [[  $cTimeStamp -gt 60 && $isTrueSame == 1 ]]
				then
					#echo "merge file--->$file"
					for ((i=0;i<=$bigNumFileName;i++))
					do echo $webvpnTmpDir$file"/"$i;
					done | xargs -i cat {} >> "$webvpnDataDir"${file/'_web_'/'_web_'$fileNewDate'_'}".tmp"
					rm -rf   $webvpnTmpDir$file
					mv   "$webvpnDataDir"${file/'_web_'/'_web_'$fileNewDate'_'}".tmp"    "$webvpnDataDir"${file/'_web_'/'_web_'$fileNewDate'_'}".txt" 
                fi

        done
}


function  doWhileListFiles()
{
	while true
	do
		listFiles
	done
}

doWhileListFiles

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯苦做java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值