标签:linux 脚本 移动文件 crontab crond
一:背景
在一个路径下有很多的文件,并且随着时间的累积文件会越来越多,并且文件名都遵循一个基本的格式,里面包含了年月日等信息,例如:TSMTPP2735D20170517142005E981.txt.gz
二:实现
我们通过一个脚本来将这些文件根据日期来分开存储,脚本如下:
#文件所在的路径 xdrBasePath=‘/data/test‘ echo ‘xdr文件根路径:‘${xdrBasePath} for file in ${xdrBasePath}/*.txt.gz; do ##截取文件里面的日期信息 #1,获取文件名.包含后缀 filename=$(basename $file) echo ‘文件名:‘${filename} #2,截取时间:TSMTPP2735D20170517142005E981.txt.gz timeyear=${filename:11:4} timemonth=${filename:15:2} timeday=${filename:17:2} #echo ‘解析出的到年的时间:‘${timeyear} #echo ‘解析出的到月的时间:‘${timemonth} #echo ‘解析出的到日的时间:‘${timeday}
yeardirpath=${xdrBasePath}/${timeyear} monthdirpath=${yeardirpath}/${timemonth} daydirpath=${monthdirpath}/${timeday} #echo $yeardirpath #echo $monthdirpath #echo $daydirpath #判断文件夹是否存在,不存在就创建 if [ ! -e ${yeardirpath} -o ! -d ${yeardirpath} ]; then mkdir ${yeardirpath} fi if [ ! -e ${monthdirpath} -o ! -d ${monthdirpath} ]; then mkdir ${monthdirpath} fi if [ ! -e ${daydirpath} -o ! -d ${daydirpath} ]; then mkdir ${daydirpath} fi #将文件移动到改目录下 mv -f ${xdrBasePath}/${filename} ${daydirpath} #echo ‘-------------------------‘ done |
这么一来,就会将文件“TSMTPP2735D20170517142005E981.txt.gz”移动到“/data/test/2017/05/17”路径下去。
if语句解释如下:
与:-a,当指定多个条件时,默认为与关系
或:-o
非:!,这是个单目操作符
文件是否存在: -e
文件是否是目录: -d
三:添加到系统调度里面
1,查看crontab服务状态
service crond status |
2,启动服务
/sbin/service crond start |
3,重启服务
/sbin/service crond restart |
4,关闭服务
/sbin/service crond stop |
5,查看调度任务
crontab -l |
6,编辑调度任务
crontab -e |
7,删除所有调度任务
crontab -r |
注意:如果只是删除某一个调度任务,请使用“crontab -e”
8,查看调度日志
tail -f /var/log/cron |
调度编辑举例:
1,执行调度编辑“crontab -e”
2,在打开的vi中添加调度任务信息,例如每我分钟执行一次上面的脚本
*/5 * * * * /data/movetest.sh |
本文出自 “因简单而自在” 博客,请务必保留此出处http://dengshuangfu.blog.51cto.com/8794650/1927444
标签:linux 脚本 移动文件 crontab crond
原文地址:http://dengshuangfu.blog.51cto.com/8794650/1927444