linux命令-date(??)

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

背景:

每日创设的东西,按日期放到不一样的文本夹里。如明日的构建放到贰零壹肆-06-01里,明天的就放置贰零壹陆-06-02里,依次类推。时间久了,须求二个剧本删除N天前的文书夹。(本例中N=7,即除去30日前的创设)。

上边直接上代码,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里,前日的就停放二零一四-06-02里,…

date命令 突显或设置系统时间和日期

date (选项) (参数)

选项:

-d “字符串” 显示字符串所指的日子与时光,注意字符串要加双引号

-s “字符串” 依照字符串来设置日期与时光。字符串必要有双引号

参数:

<时间日期格式>

%m 月份     %w 一个星期的第几天  %d 二个月的第几天

%y 年的末梢多个数字

实例:

1,格式化输出   date + “%Y-%m-%d”

[root@localhost network-scripts]# date + “%Y-%m-%d”

date: 额外的操作数 “%Y-%m-%d”

有问题。。。。

2,输出前日日期:

date -d “1 day ago” + “Y-%m-%d”

date: 额外的操作数 “Y-%m-%d”

Try ‘date –help’ for more information.

[root@localhost network-scripts]# date

2017年 07月 22日 星期六 23:59:55 CST

[root@localhost network-scripts]#

发表评论

电子邮件地址不会被公开。 必填项已用*标注