求解!!! shell脚本: 要求 判断指定文件最后修改的日期是否是今天,或者判断n天之内是否被修改。。

求解!!! shell脚本: 要求 判断指定文件最后修改的日期是否是今天,或者判断n天之内是否被修改。。,第1张

$dir_name= # 要删除的文件所在文件夹

$file_name= #要删除文件的文件名,可使用等通配符

find $dir_name -name "$file_name" -mtime +3 | xargs rm -rf #删除3天前的符合条件的文件

date -d" -11 month " +%Y%m%d

获取到当天的日期

然后再判断月份,如果是1,3,5,7,8,10,12

那么把日期替换成31

如果是4,6,9,11

那么把日期替换成30

如果是2

还得去判断是否为闰年

是闰年就29

不是就28

#!/bin/bash

date_day=`date +%d`

for ((i=1;i<=$date_day;i++))

 do

   date +%Y-%m-$i

 done

执行效果如下:

#判断当前的年份是否为闰年

sleapyear()

{

r4=`expr $1 % 4`

r100=`expr $1 % 100`

r400=`expr $1 % 400`

if [ r4 -eq 0 and r100 -ne 0 ]; then

return 1

elif [ r400 -eq 0 ]

then

return 1

else

return 0

fi

}

#获取前一天的日期,在此函数中会调用判断闰年的函数

yesterday()

{

day=`echo "$3 - 1"|bc`

month=$2

year=$1

if [ $day -eq 0 ]; then

month=`echo "$2 - 1"|bc`

isleapyear $1

leap=$

case $month in

0|1|3|5|7|8|10|12 )

day=31;;

4|6|9|11 )

day=30;;

2 )

if [ $leap -eq 1 ]; then

day=29

else

day=28

fi;

esac

if [ $month -eq 0 ]; then

month=12

year=`echo "$1 - 1"|bc`

fi

fi

date=`printf "%s%02s%02s" $year $month $day`

}

#设置传入yesterday函数的参数

set `date +%C%y\ %m\ %d`; YEAR=$1; MONTH=$2; DAY=$3

#调用yesterday,传入三个参数,分别为当前年,当前月,当前日

yesterday $YEAR $MONTH $DAY

echo $date

看看帮助吧,man

date

格式中就是两个

减号

,date

--date=STRING

等同于,date

-d

STRING

两个减号后面是更易于理解的描述。

$((

))

是取值运算符。`

`

表示优先做完包含的内容,指示优先级用的。

要学会拆分开来看,化繁为简。

这句话意思就是,求出

date

--date="$year$bir"

+%s

date

+%s

的时间差(单位:秒),最后换算出天数。

date

--date="$year$bir"

+%s

表示指定时间与UTC时间

1970-01-01

00:00:00

之间相差的秒数

date

+%s

表示当前时间与UTC时间

1970-01-01

00:00:00

之间相差的秒数。

最后

total_d

就表示当前时间与指定时间之间相差的天数。

如果是获取前一周的日期(当前日期回退一周)可以用这个:

date -d "-7 days" +"%Y-%m-%d"

或者:date -d "-1 weeks" +"%Y-%m-%d"

1、date +%w

%w day of week (06); 0 is Sunday

2、如果星期2-6,上一个工作日肯定就是

t1=`date -d yesterday`

或者

t2=`date -d -1day`

3、如果星期天,上一个工作日肯定就是

t3=`date -d -2day`

4、如果星期1,上一个工作日肯定就是

t4=`date -d -3day`

5、法定节假日根据实际情况算吧

6、实例

#!/bin/sh

week=`date +%w`

case "$week" in

0)

last_work_day=`date -d -2day`

;;

1)

last_work_day=`date -d -3day`

;;

)

last_work_day=`date -d -1day`

;;

esac

echo $last_work_day

以上就是关于求解!!! shell脚本: 要求 判断指定文件最后修改的日期是否是今天,或者判断n天之内是否被修改。。全部的内容,包括:求解!!! shell脚本: 要求 判断指定文件最后修改的日期是否是今天,或者判断n天之内是否被修改。。、shell中如何获取以当天日期开始的前11个月最后一天的日期、shell中如何获取当前月1号到当天的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9552435.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存