首页运维零件 › 这时可以使用date的 -d参数,–date=STRING  显示STRING指定的时间 

这时可以使用date的 -d参数,–date=STRING  显示STRING指定的时间 

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

背景:

每一天营造的东西,按日期放到不相同的公文夹里。如前几日的塑造放到2014-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里,明天的就停放二〇一五-06-02里,...

有问题。。。。

$ date -d last-day +%Y%m%d(后天的日期) 只怕:date -d yesterday +%Y%m%d

  %j 一年中的第几天 (001..366)

突显月份和日数 : date +%B %d 

学业:删除目录下全数隐含  test 的文书或目录

$ date -d ’50 days’(50天后的日期)

  %I 12时辰制的小时 (01..12)

%B : 月份 (January..December) 

%y 年的末尾多个数字

%m    月份(01..12) 

还应该有任何用法:

##留存bcdate的话,可以平昔动用。 

选项:

stamp=`expr $stamp2 - $stamp1`

  %r 12小时制的时日代表(时:分:秒,双位) time, 12-hour (hh:mm:ss
[AP]M)
  %Wrangler 24小时制的大运代表 (时:分,双位)time, 24-hour (hh:mm)
  %s 自基础时间 1969-01-01 00:00:00 到当前天天的秒数(a GNU
extension)
  %S 双位秒 second (00..60);
  %t 横向制表位(tab)
  %T 24钟头制时间代表(hh:mm:ss)
  %u 数字代表的星期(从星期三开头 1-7)
  %U 一年中的第几周 礼拜天为始发 (00..53)
  %V 一年中的第几周 周四为早先 (01..53)
  %w 一周中的第几天 星期天为最初 (0..6)
  %W 一年中的第几周 周二为始发 (00..53)
  %x 本地日期格式 (mm/dd/yy)
  %X 本地时间格式 (%H:%M:%S)
  %y 两位的年(00..99)
  %Y 年 (1970…)
  例子:编写shell脚本计算离本身诞辰还也可以有多少天?

名称 : date 

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

%w     一周的第几天 (0..6);  0 代表周天 

[plain] view
plaincopy

date -d last-day +%Y%m%d

此处直接报错。。没符合规律呈现

%s     从00:00:00 一九七零-01-01 UTC开端的秒数 

lastmonth=`date+%Y-%m --date="-1 month"`"-01";

$ date -d "$a -10 days" 

下边查看包含 test 的文本夹find /App/ido/jobs  -type d -name "*test*"

%V     一年的第几周,礼拜三为周周的率后天 (01..53) 

由此及彼:date命令获得前日,今日,后天,后天,前段日子,下月的日期

% %n : 下一行 

图片 2

$ date -d "2010/11/15 23:0:2" 

  %l 短格式12小时制的钟点 ( 1..12)

$ date "+%Y-%m-%d %H:%M:%S" -r test.bak 

date -d "1 day ago" + "Y-%m-%d"

stamp2=`date --date=$date2 +%s`

创办以当下时刻为文件名的

date -d next-day +%Y%m%d


echo $stamp

  1. read -p"Input your birthday(YYYYmmdd):" date1  
  2.   m=`date--date="$date1" +%m` #赢得出生之日的月  
  3.   d=`date--date="$date1" +%d` #收获出生之日的日  
  4.   date_now=`date+%s` #获得当前时刻的秒值  
  5.   y=`date +%Y` #赢妥善前光阴的年  
  6.   birth=`date--date="$y$m$d" +%s` #收获二〇一八年的八字日期的秒值  
  7.   internal=$(($birth-$date_now)) #总括后天到威海日期的间隔时间  
  8.   if ["$internal" -lt "0" ]; then #看清前天的八字是或不是已过  
  9.   birth=`date--date="$(($y+1))$m$d" +%s` #获得明日的破壳日日期秒值  
  10.   internal=$(($birth-$date_now))#总计前些天到下贰个华诞的间隔时间  
  11.   fi  
  12.   echo "Thereis :$((einternal/60/60/24)) days." #输出结果,秒换算为天  

获得今日的日子

3、2秒后输出:date -d "2 second" + "%Y-%m-%d %H :%M.%s"

至于接纳该命令,还会有任何一些根本的章程:

  %M 双位分钟 (00..59)

DATE=$(date +%Y%m%d)

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

%z     奥德赛FC-2822 风格数字格式时区(-0500) 

   date -d "-2 day"
"+%Y%m%d %A"   或 date --date="2 days ago""+%Y%m%d %A"

Jul/01/2008 

6、设定时间: date -s

已知日子戳,求当明天子
date --date="19700101 +$(($((`date +%s`))+(8*60*60))) sec" +%Y%m%d"
"%H:%M:%S
PS:从一九六九年01七月01日起来算, +$(($((`date +%s`))+(8*60*60))) sec
表示过了不怎么秒,在那之中(8*60*60)表示8个时辰,时区难点,本国时间与世风时间相差8时辰。

ntpdate ntp1.nl.net 

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

 

date -d last-month +%Y%m

图片 3

$ ls -l 

  %m 双位月份 (01..12)

获取前几天的日子

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]#

%I     小时(01..12) 

  %k 短格式24时辰制的钟点 ( 0..23)

本来,也能钦定其余的ntp服务器 

date命令 显示或安装系统时间和日期

%b     月份的缩写(Jan..Dec) 

mkdir `date+%Y%m%d`

date
工具得以做到愈来愈多的劳作,不唯有只是打字与印刷出当下的系统日期。您能够应用它来得到给定的日期终归是星期几,并获得相对于当下日子的对峙日期。明白某一天是星期几 

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

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

-奥迪Q7, –rfc-2822  以奥迪Q7FC-2822非凡日期格式显示时间 

   date -d "-1 month"
"+%Y%m%d %A"

 

4、故事中的 1234567890 秒:

%k     小时( 0..23) 

date命令如何得到上星期的日子?

mm 为分钟, 

图片 4

$ date -d next-day +%Y%m%d(后天的日期)大概:date -d tomorrow +%Y%m%d

  %F 文件时间格式 same as %Y-%m-%d

赢得前段日子的年和月

5、前边还有-普通转格式-apache格式调换、格式调换后时间游走、加减操作权且不操作,同上会出错

$ date -d ‘-100 days’ (100天在此以前的日子)

  %p 大写的当前域的上中午提醒 (blank in many locales)

安装系统当下时光(12:34:56):date --s 12:34:56 

find /App/ido/jobs  -type f -name "*test*" -delete

date -d ’1968-01-01 UTC time seconds’ +”%Y-%m-%d %T %z” (time为时间戳)


例子 : 

2,输出今日日子:

%d     贰个月的第几天(01..31) 

  %D 长时间格式 (mm/dd/yy)

突发性大家必要利用前天在此之前依旧以往的日期,那时能够选用date的 -d参数

实例:

$ date -d ’30 days ago’ (30天前的日子)

#date -d "-1 week" 
+%Y-%m-%d
                  //一周前
2015-06-30
uuwatch@i161 ~ $ date -d "-2 week" 
+%Y-%m-%d
             //两周前
2015-06-23
uuwatch@i161 ~ $ date -d "1 week" 
+%Y-%m-%d
              //一周后
2015-07-14

-u : 显示近年来的Green威治时间 


$ echo "2010-11-15 23:00:01" > date.txt 

   date -d "-1 day"
"+%Y%m%d %A"   或 date --date="1 day ago""+%Y%m%d %A"

-d datestr : 展现 datestr 中所设定的岁月 (非系统时间) 

<时间日期格式>

%P     am or pm 

   date -d "1 month"
"+%Y%m%d %A"

if test "`echo $DAY`" = "Aug 16"; then echo ’Product launch is now two
weeks away!’; fi 

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

%N     纳秒(000000000..999999999) 

  %P 小写的当前域的上早晨提示 (blank in many locales)

增加36小时: 

date (选项) (参数)

%y     年份(00..99) 

  %n 换行

你能够选取负数以获取相反的日期: 

参数:

私下认可景况下,在体现日期和岁月时,date命令使用数字0填充数字域。比如,要是用两位数显月份,则1四月显示为“06”,也得以用下述调控符来调节填充符号。

tar cvf./htdocs`date +%Y%m%d`.tar ./*

在意 : 当你不愿意出现无意义的 0 时(比如说 壹玖玖捌/03/07),则能在标志中插入

剔除文件夹这里存在三个难点,是不是强制删除”非空目录“,就从未有过删除

total 4 

   date -d "1 day" "+%Y%m%d
%A"

%H : 小时(00..23) 

转载本站文章请注明出处:vns威尼斯城官网登入 http://www.tiec-ccpittj.com/?p=1979

上一篇:

下一篇:

相关文章