今天工作中遇到一个类似下面提到的需求,这是我写的第一个脚本程序,比较丑陋,还是记录下,以备后用。
需求:某个目录下每天生成一个文件,生成时将文件压缩成.gz格式,如今天是2013年6月3号,则生成file-20130603-log.gz文件,而另一个程序则是读取file-20130603-log文件,且程序中读文件时当文件名包括"file"时则读取。
实现:写一个脚本将src目录下当前日期的.gz文件先解压,并将解压后的文件移到另一个目录des下,这样程序读取时就读取des目录下的文件。shell脚本如下:
#!/bin/bash
date=`date +%Y%m%d` #生成当前日期格式为,
若想得到昨天的日期
date=`date -d yesterday +%Y%m%d`
srcFile=/home/daen/src/ #src文件即.gz格式文件所在目录
desPath=/home/daen/des/ #解压后移送到的des目录
suffix=.gz #文件后缀
desFile=tx3.login.$date.log #解析程序读取的文件名即解压后的文件名
file=$srcFile$desFile$suffix #被解压文件的完整路径
if [ -f $file ];then
gunzip -c $file > $desPath$desFile #解压文件并将文件定义到des目录下
else
echo $file 'not exist!'
fi
///
将文件压缩成.gz格式文件的命令:
gzip -c 源文件 > 目标文件
如将test.txt文件压缩成test.gz文件
gzip -c test.txt > test.gz