shell脚本删除N天前的文件夹-----附linux和mac上date命令的不同
来源:互联网 发布:为知笔记登录 编辑:程序博客网 时间:2024/05/17 09:38
背景:
每日构建的东西,按日期放到不同的文件夹里。如今天的构建放到2015-06-01里,明天的就放到2015-06-02里,依次类推。时间久了,需要一个脚本删除N天前的文件夹。(本例中N=7,即删除一周前的构建)。
下面直接上代码,linux版:
#! /bin/bashhistoryDir=~/test/today=$(date +%Y-%m-%d)echo "---------today is $today-----------"tt=`date -d last-week +%Y-%m-%d`echo "next is to delete release before $tt"tt1=`date -d $tt +%s` #小于此数值的文件夹删掉#echo $tt1 for file in ${historyDir}*do if test -d $file then name=`basename $file` #echo $name curr=`date -d $name +%s` if [ $curr -le $tt1 ] then echo " delete $name-------" rm -rf ${historyDir}${name} fi fidone
注意事项:
1,historyDir=~/test/后面一定要带/,否则在后面的遍历文件夹时for file in ${historyDir}*会对应不上。
2,在linux下通过today=$(date +%Y-%m-%d)获得格式为2015-06-01类型的日期,通过
tt1=`date -d $tt +%s`
得到整形的时间戳。当然也可以在获得时间的时候就用$(date +%s)这样直接得到的就是时间戳,不用再转换了,但是日期是默认的年月日小时分秒的格式转换的时间戳。
PS:MAC下不行。
3,linux里通过date -d last-week +%Y-%m-%d来获得一周前的日期。
PS:MAC下没行。
4,通过 if test -d $file来判断文件夹是否存在,-f是判断文件是否存在。
name=`basename $file`
这句话获得文件夹的名字,之后是将名字(也就是日期)转为时间戳比较。
MAC上的代码
#! /bin/bashhistoryDir=~/test/today=$(date +%Y-%m-%d)echo "---------today is $today-----------"today1=`date -j -f %Y-%m-%d $today +%s`#echo "today1=$today1"#求一周前的时间tt=$(date -v -7d +%Y-%m-%d)echo "next is to delete release before $tt"tt1=`date -j -f %Y-%m-%d $tt +%s` #linux上可以这样`date -d $tt +%s` #小于此数值的文件夹删掉#echo $tt1 for file in ${historyDir}*do if test -d $file then name=`basename $file` echo $name curr=`date -j -f %Y-%m-%d $name +%s` if [ $curr -le $tt1 ] then echo " delete $name" rm -rf ${historyDir}${name} fi fidoneecho "--------------end---------------"
跟linux上不同之处有二:
1,将字符串的时间转为整数的时间戳时,mac上要这样:
today1=`date -j -f %Y-%m-%d $today +%s`
2,获得7天之前的日期mac上要这样:
tt=$(date -v -7d +%Y-%m-%d)
相关链接:
1,http://willzh.iteye.com/blog/459808
2,http://apple.stackexchange.com/questions/115830/shell-script-for-yesterdays-date
2 0
- shell脚本删除N天前的文件夹-----附linux和mac上date命令的不同
- linux删除当前文件夹最新的前n个文件shell指令
- AIX上的date命令和循环语句与linux上的不同
- linux shell 脚本 历史文件清理脚本,按天,按月,清理前N天的历史文件,删除指定大小历史文件,历史文件归档清理
- Linux 定时删除文件或文件夹的shell脚本
- linux 删除N天前的文件
- Linux 删除N天前的文件
- linux 删除N天前的文件
- shell脚本删除几天前的备份文件
- 脚本删除指定N天前的文件
- linux下删除当前文件夹中按时间排序的前N个文件夹
- shell脚本自动删除n天前日志
- date命令shell上的详细参数
- 常用的 Mac OS shell脚本和控制台命令
- linux删除某个文件夹下30天前的文件
- linux的shell脚本和dd命令把镜像文件写到SD卡上
- LINUX Shell:复制文件夹的脚本
- linux下shell命令date的妙用
- Node.js工具模块
- 黑马程序员——Java语言基础判断及循环
- Freescale Power Architecture Book E Virtual CPU Specification
- LeetCode——Two Sum
- Android源码下载及开发环境的搭建
- shell脚本删除N天前的文件夹-----附linux和mac上date命令的不同
- 立体类族共有的抽象类
- 123123
- php异常处理—重新抛出异常
- 线段树区间更新,区间统计+离散化 POJ 2528 Mayor's posters
- 百度APIStore
- 设计模式 装饰者模式 带你重回传奇世界
- 掌阅标签功能能否自定义名字?
- Hibernate HelloWorld-08 一对一的映射