solaris下shell简单脚本

最近写了个关于复制文件,删除文件的脚本,主要功能是通过将一个文件夹下面的文件按时间顺序定时拷入另一个文件夹中,文件形式如附件,文件时间跨越4小时

定时由crontab来执行,每分钟执行一次脚本。

代码如下:

#!/usr/bin/bash
myyear=`date +%Y`
mymonth=`date +%m`
myday=`date +%d`
myhour=`date +%H`
mymin=`date +%M`
scadafilename=`date '+sz_%Y%m%d_%H%M%S_SCADA.DT~'`
pasfilename=`date '+sz_%Y%m%d_%H%M%S_PAS.DT~'`
myfilepath="/aems/sz/eformatdata/"
targetfilepath="/aems/datastore/sz_data/eformat/"
function createfile()
{
	prename="sz_20090523_"
	suffixname1="_SCADA.DT~"
	suffixname2="_PAS.DT~"
	tmp1=`expr ${myhour} % 4`
	tmp2=`expr ${tmp1} + 7`

	if(test $tmp2 -ge 10)
		then
			filehour=$tmp2
	else
		filehour="0"${tmp2}
	fi 

	fileprename=${prename}${filehour}${mymin}
	r1=`ls  ${myfilepath} | grep ${fileprename} | grep ${suffixname1}`
	length1=`echo "${r1}" | awk '{print length($0)}'`
	if (test "${r1}" != "")
		then
			if (test $length1 -eq 28)
				then
					`cp ${myfilepath}${r1} ${targetfilepath}${scadafilename}`
			fi
	fi

	r2=`ls ${myfilepath} | grep ${fileprename} | grep ${suffixname2}`
	length2=`echo "${r2}" | awk '{print length($0)}'`
	if (test "${r2}" != "")
		then
			if(test $length2 -eq 26)
				then
					`cp ${myfilepath}${r2} ${targetfilepath}${pasfilename}`
			fi
	fi
}

createfile

function cleardata()
{
	if (test $myhour -eq 0)
		then
			if (test $mymin -eq 0)
				then
					`find /aems/logs/dataService -name "*.*" -ctime +7 -exec rm -fr {} \`
					`find /aems/logs/deviceService -name "*.*" -exec +7 -exex rm -fr {} \`
			fi
	fi

	findpreonehour

	delscadaname=${targetfilepath}"sz_"${preyear}${premonth}${preday}"_"${prehour}${premin}"00_SCADA.DT~"
	delpasname=${targetfilepath}"sz_"${preyear}${premonth}${preday}"_"${prehour}${premin}"00_PAS.DT~"

	if (test -e ${delscadaname}) 
		then
			`rm ${delscadaname}`
	fi
	if (test -e ${delpasname})
		then
			`rm ${delpasname}`
	fi
}

function findpreonehour()
{
	premin=$mymin
	prehour=`expr ${myhour} - 1`
	preday=$myday
	premonth=$mymonth
	preyear=$myyear
	if (test $prehour -eq -1)
		then
			prehour=23
			preday='expr ${myday} - 1`
	fi
	if (test $preday -eq 0)
		then
			premonth=`expr ${mymonth} - 1'
	fi
	if (test $premonth -eq 0)
		then
			premonth=12
			preyear=`expr ${myyear} - 1`
	fi
	if (test $preday -eq 0)
		then
			case $premonth in
				1|3|5|7|8|10|12) preday=31;;
				4|6|9|11) preday=30;;
				2) if (test `expr $preyear % 4` -eq 0)
					then
						preday=29
			       	else
					preday=28
				fi
				;;
			esac
	fi

	phl=`echo ${prehour} | awk '{print length($0)}'`
	if (test $phl -lt 2)
		then
			prehour="0"$prehour
	fi

	pdl=`echo ${preday} | awk '{print length($0)}'`
	if (test $pdl -lt 2)
		then
			preday="0"$preday
	fi

	pml=`echo ${premonth} | awk '{print length($0)}'`
	if (test $pml -lt 2)
		then
			premonth="0"$premonth
	fi
}
cleardata
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值