shell脚本,根据时间范围压缩时间目录成一个文件
2015-05-21 17:59
405 查看
Linux服务器下存放文件目录是通过日期(yyyyMMdd)创建的,现在要根据一个日期范围(yyyy-MM-dd)把多个目录压缩成一个文件。
#!/bin/sh
#通过参数把子目录、时间起始范围传进来
#子目录
adudid=${1}
#开始时间,如2015-05-19
daybegin=${2}
#结束时间,如2015-05-20
dayend=${3}
sourceFolder='/mnt/programs/resource/screenimg/'
targetFolder='/mnt/programs/resource/screenimg/'
#一天的秒数
dayms=$[24*60*60]
echo "dayms ${dayms}"
#将时间换成yyyy-MM-dd HH:mm:ss格式
daybeginms=`date -d "${daybegin} 00:00:00" +%s`
dayendms=`date -d "${dayend} 00:00:00" +%s`
sourceZipFolder=${sourceFolder}${adudid}'/'`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`
#这个应该写成无限循环
for ((i=0;i<500;i++));
do
echo ${daybeginms} 'compare to' ${dayendms}
#比较时间
if [ ${daybeginms} -eq ${dayendms} ]; then break
else
daybeginms=$[${daybeginms} + ${dayms}]
sourceZipFolder="${sourceZipFolder} ${sourceFolder}${adudid}/`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`"
fi
echo ${daybeginms} 'compare result' ${dayendms}
done
echo ${sourceZipFolder}
#压缩文件的名称
filename=${adudid}'_'`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`'_'`date -d "1970-01-01 UTC ${dayendms} seconds" +%Y%m%d`'.tar'
#拼接的命令
cmdstr="tar -cf ${targetFolder}${filename} ${sourceZipFolder}"
echo ${cmdstr}
`${cmdstr}`
总结:
刚开始也是各种不会,还好可以在网上查询到相关文章。
1、shell时间(字符串和时间戳转换)
在shell中,字符串转换为时间戳可以这样做:
date -d "2010-10-18 00:00:00" +%s
输出形如:
1287331200
其中,-d参数表示显示指定的字符串所表示的时间,+%s表示输出时间戳。
而时间戳转换为字符串可以这样做:
date -d @1287331200
输出形如:
Mon Oct 18 00:00:00 CST 2010
文章来源:http://www.codelast.com/
如果要转换成“2010-10-18 00:00:00”这种形式的时间戳,则这样做:
date -d "1970-01-01 UTC 1287331200 seconds" "+%F %T"
输出形如:
2010-10-18 00:00:10
再多废话一句,如果只要输出日期,不要时间,则去掉 %T 就可以了:
date -d "1970-01-01 UTC 1287331200 seconds" +%F
输出形如:
2010-10-18
转自:http://blog.csdn.net/taijianyu/article/details/6907278
在xshell终端输入“date --help”,可以看到date命令的其它介绍,如果要把秒转换成yyyyMMdd格式,可以:date -d "1970-01-01 UTC 1287331200 seconds" +%Y%m%d
2、for循环,if使用,数字比较大小等
转自:http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
http://bbs.chinaunix.net/thread-563864-1-1.html http://www.jb51.net/article/34332.htm http://blog.sina.com.cn/s/blog_7ec3252d01013l2w.html
需要注意的是for循环后面是双括号,而且要与for关键字保持一个空格的距离;if也是要与后面的[ ... ]保持距离,而且[]还要与里面的内容保持一个空格的距离。
3、数字的运算,比如加减乘除什么的
http://blog.csdn.net/taijianyu/article/details/6907288
#!/bin/sh
#通过参数把子目录、时间起始范围传进来
#子目录
adudid=${1}
#开始时间,如2015-05-19
daybegin=${2}
#结束时间,如2015-05-20
dayend=${3}
sourceFolder='/mnt/programs/resource/screenimg/'
targetFolder='/mnt/programs/resource/screenimg/'
#一天的秒数
dayms=$[24*60*60]
echo "dayms ${dayms}"
#将时间换成yyyy-MM-dd HH:mm:ss格式
daybeginms=`date -d "${daybegin} 00:00:00" +%s`
dayendms=`date -d "${dayend} 00:00:00" +%s`
sourceZipFolder=${sourceFolder}${adudid}'/'`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`
#这个应该写成无限循环
for ((i=0;i<500;i++));
do
echo ${daybeginms} 'compare to' ${dayendms}
#比较时间
if [ ${daybeginms} -eq ${dayendms} ]; then break
else
daybeginms=$[${daybeginms} + ${dayms}]
sourceZipFolder="${sourceZipFolder} ${sourceFolder}${adudid}/`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`"
fi
echo ${daybeginms} 'compare result' ${dayendms}
done
echo ${sourceZipFolder}
#压缩文件的名称
filename=${adudid}'_'`date -d "1970-01-01 UTC ${daybeginms} seconds" +%Y%m%d`'_'`date -d "1970-01-01 UTC ${dayendms} seconds" +%Y%m%d`'.tar'
#拼接的命令
cmdstr="tar -cf ${targetFolder}${filename} ${sourceZipFolder}"
echo ${cmdstr}
`${cmdstr}`
总结:
刚开始也是各种不会,还好可以在网上查询到相关文章。
1、shell时间(字符串和时间戳转换)
在shell中,字符串转换为时间戳可以这样做:
date -d "2010-10-18 00:00:00" +%s
输出形如:
1287331200
其中,-d参数表示显示指定的字符串所表示的时间,+%s表示输出时间戳。
而时间戳转换为字符串可以这样做:
date -d @1287331200
输出形如:
Mon Oct 18 00:00:00 CST 2010
文章来源:http://www.codelast.com/
如果要转换成“2010-10-18 00:00:00”这种形式的时间戳,则这样做:
date -d "1970-01-01 UTC 1287331200 seconds" "+%F %T"
输出形如:
2010-10-18 00:00:10
再多废话一句,如果只要输出日期,不要时间,则去掉 %T 就可以了:
date -d "1970-01-01 UTC 1287331200 seconds" +%F
输出形如:
2010-10-18
转自:http://blog.csdn.net/taijianyu/article/details/6907278
在xshell终端输入“date --help”,可以看到date命令的其它介绍,如果要把秒转换成yyyyMMdd格式,可以:date -d "1970-01-01 UTC 1287331200 seconds" +%Y%m%d
2、for循环,if使用,数字比较大小等
转自:http://blog.sina.com.cn/s/blog_9d074aae01012ytf.html
http://bbs.chinaunix.net/thread-563864-1-1.html http://www.jb51.net/article/34332.htm http://blog.sina.com.cn/s/blog_7ec3252d01013l2w.html
需要注意的是for循环后面是双括号,而且要与for关键字保持一个空格的距离;if也是要与后面的[ ... ]保持距离,而且[]还要与里面的内容保持一个空格的距离。
3、数字的运算,比如加减乘除什么的
http://blog.csdn.net/taijianyu/article/details/6907288
相关文章推荐
- linux、shell脚本实例一“查找一个文件或者目录 找到了提示 没找到则输出未找到”
- Shell脚本实现根据文件的修改时间来分类文件
- 根据字段状态删除指定目录文件的shell脚本
- 一个用于定时刷新文件访问时间戳的Shell脚本
- 一个shell脚本解多个压缩文件(改别人的代码)
- shell脚本删除指定目录下超过指定时间的文件
- Shell脚本实现根据文件的修改时间来分类文件
- 一个简单的压缩成tar.gz文件的shell脚本
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
- 一个监控LINUX目录和文件变化的Shell脚本分享
- shell命令:给当前目录里一个文件压缩一份不包含.svn文件的zip包
- 编写一个SHELL脚本,可以获得指定目录下的所有文件及文件夹的大小。输出的样式与 ls -lh 命令相同。
- linux下设计一个Shell脚本:判断当前工作目录下所有的文件类型。
- 一个监控LINUX目录和文件变化的Shell脚本分享
- SHELL脚本--用于检测一个或者多个对象是文件或者目录
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- shell读取脚本同一个目录下的xml格式的文件
- 用shell脚本写出检测/tmp/size.log文件,如果存在显示它的内容,不存在则创建一个文件将创建时间写入
- 『转』统计一个日志文件里,单词出现频率的shell脚本