快捷搜索:

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

2019-10-10 作者:白姐四不像必中一肖图   |   浏览(103)

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

背景:

天天营造的东西,按日期放到不相同的文书夹里。如明天的营造放到二〇一六-06-01里,今天的就放到二〇一四-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来博取七日前的日子。

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


背景: 每天创设的事物,按日期放到分裂的文书夹里。如明天的创设放到二零一五-06-01里,后天的就放置2016-06-02里,...

本文由正版香港马报免费资料发布于白姐四不像必中一肖图,转载请注明出处:shell脚本删除N天前的文件夹

关键词: