shell脚本删除N天前的文件夹

作者: 全球彩票官网下载  发布:2019-10-13

shell脚本删除N天前的公文夹

背景:

每一日创设的东西,按日期放到分化的文件夹里。目前天的营造放到2014-06-01里,今天的就放置2014-06-02里,依次类推。时间久了,须求一个本子删除N天前的公文夹。(本例中N=7,即除去二三日前的营造)。

上边直接上代码,linux版:

#! /bin/bash

historyDir=~/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

fi

done

全球彩票历史版本,注意事项:

1,historyDir=~/test/前边必然要带/,不然在后面包车型客车遍历文件夹时for file in ${historyDir}*会对应不上。

2,在linux下通过today=$(date +%Y-%m-%d)得到格式为贰零壹肆-06-01类型的日子,通过

tt1=`date -d $tt +%s`

得到整形的时刻戳。当然也足以在获得时间的时候就用$(date +%s)那样直接获得的便是光阴戳,不用再转变了,但是日子是私下认可的年月日小时分秒的格式转变的年华戳。

PS:MAC下不行。

3,linux里通过date -d last-week +%Y-%m-%d来获得15日前的日期。

PS:MAC下没行。

4,通过 if test -d $file来判别文件夹是或不是存在,-f是判断文件是还是不是留存。

name=`basename $file`

那句话赢得文件夹的名字,之后是将名字(也正是日期)转为时间戳相比。

MAC上的代码

#! /bin/bash

historyDir=~/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

fi

done

echo "--------------end---------------"

跟linux上区别之处有二:

1,将字符串的光阴转为整数的时光戳时,mac上要那样:

today1=`date -j -f %Y-%m-%d $today +%s`

2,得到7天在此以前的日期mac上要这么:

tt=$(date -v -7d +%Y-%m-%d)

全球彩票历史版本 1


背景: 每天构建的事物,按日期放到分化的文书夹里。如前几天的创设放到2015-06-01里,前天的就放置2016-06-02里,...

本文由全球彩票历史版本发布于全球彩票官网下载,转载请注明出处:shell脚本删除N天前的文件夹

关键词: