linux命令-date(??)

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)得到格式为2016-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)

365bet 1


背景:
每一日营造的事物,按日期放到不一致的文件夹里。如后天的营造放到2016-06-01里,前几日的就放置2014-06-02里,…

%m 月份     %w 一个礼拜的第几天  %d 四个月的第几天

%G     年份(yyyy) 

  %r 12时辰制的日子代表(时:分:秒,双位) time, 12-hour (hh:mm:ss
[AP]M)
  %帕杰罗 24时辰制的小运代表 (时:分,双位)time, 24-hour (hh:mm)
  %s 自基础时间 一九六六-01-01 00:00:00 到当前每一天的秒数(a GNU
extension)
  %S 双位秒 second (00..60);
365bet,  %t 横向制表位(tab)
  %T 24钟头制时间表示(hh:mm:ss)
  %u 数字代表的礼拜(从星期五起先 1-7)
  %U 一年中的第几周 周日为始发 (00..53)
  %V 一年中的第几周 周五为初阶 (01..53)
  %w 28日中的第几天 周六为发端 (0..6)
  %W 一年中的第几周 周一为始发 (00..53)
  %x 本地日期格式 (mm/dd/yy)
  %X 本地时间格式 (%H:%M:%S)
  %y 两位的年(00..99)
  %Y 年 (1970…)
  例子:编写shell脚本计算离自身出生之日还应该有多少天?

%y 年的最后七个数字

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

  %I 12小时制的钟点 (01..12)

-d “字符串” 突显字符串所指的日期与时间,注意字符串要加双引号

$

#date -d “-1week” “+%Y%m%d %A”

有问题。。。。

-ITIMESPEC, –iso-8601[=TIMESPEC]  以ISO  8601
格式呈现日期/时间。TIMESPEC为”date”(只浮现日期)、”hours”、”minutes”、”senconds”(展现时间精度)之一,默以为”date”。 

  %e 短格式天 ( 1..31)

365bet 2

下划线(_):表示用空格填充数字域。

uuwatch@i161 ~ $ date -d “-1 month” 
+%Y-%m-%d
           //上个月
2015-06-07
uuwatch@i161 ~ $ date -d “1 month” 
+%Y-%m-%d
            //下个月
2015-08-07

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

$ date +”Today is %A” 

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

参数:

2 获取当前些天子

就这样类推:date命令获得今天,前日,前日,后天,下贰个月,上一个月的日子

find /App/ido/jobs  -type d -name “*test*” -delete

echo $stamp

或者:#date -d “last week” +%Y%m%d

作业:删除目录下全部隐含  test 的文本或目录

暗中认可景况下,在呈现日期和岁月时,date命令使用数字0填充数字域。比如,假诺用两位数字展现月份,则九月展现为“06”,也得以用下述调节符来控制填充符号。

[plain] view
plaincopy

上边查看富含 test 的文书夹find /App/ido/jobs  -type d -name “*test*”

date命令输出突显格式

  %p 大写的当前域的上深夜提示 (blank in many locales)

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

$ date -Ihours 

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

6、设定时期: date -s

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

   date -d “-1 month”
“+%Y%m%d %A”

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

$ ls -l 

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

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

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

备份以时间做为文件名的

2,输出明日日子:

2010-11-15T21:16:24-0800 

   date -d “1 month”
“+%Y%m%d %A”

选项:

Mon Nov 15 21:14:36 PST 2010 

还或许有别的用法:

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

$ date +”%Y-%m-%d %H:%M:%S” 

已知日子戳,求当前几日子
date –date=”19700101 +$(($((`date +%s`))+(8*60*60))) sec” +%Y%m%d”
“%H:%M:%S
PS:从1970年01十月01日上马算, +$(($((`date +%s`))+(8*60*60))) sec
表示过了有个别秒,当中(8*60*60)表示8个小时,时区难点,作者国时间与世界时间距离8小时。

date (选项) (参数)

stamp=`expr $stamp2 – $stamp1`

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

4、典故中的 1234567890 秒:

2010-11-15 09:51:55 PM 

  %h same as %b


$ cat date.txt 

date+%s   能够博得UNIX的年华戳;

那边一直报错。。没正常呈现

%t     制表符 

 

<时间日期格式>

如:date –date=”1970-01-01 UTC  1291363421 seconds” “+%Y-%m-%d”

创办以前段时间时光为文件名的

365bet 3

%u     十一日的第几天(1..7);  1 意味星期四 

   echo `date -d”-1 month”
“+%Y-%m-%d %X”`

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

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

接下来 awk -v 作为三个参数那样传进去简单题。


$ date -d “2010-11-15 23:00:01” 

  %H 24小时制的钟点 (00..23)

实例:

您能够运用负数以获得相反的日期:

mkdir `date+%Y%m%d`

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

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

$ date +”Date:%b. %e, %G” 

uuwatch@i161 ~ $ date
+%Y-%m-%d

2015-07-07
uuwatch@i161 ~ $ date -d “1 day” 
+%Y-%m-%d
                   
//1天后(今天),别的类似2天后(后天)把1改成2就能够
2015-07-08
uuwatch@i161 ~ $ date -d “-1 day” 
+%Y-%m-%d
       
//-1天前(后天),别的类似2天前(明日)把-1改成-2即可
2015-07-06

除去文件夹这里存在三个标题,是否强制删除”非空目录“,就从不删除

%N     纳秒(000000000..999999999) 

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

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

Mon Nov 15 08:00:02 PST 2010 

  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.” #出口结果,秒换算为天  

365bet 4

%Y     年份 (1970…) 

   date -d “2 day” “+%Y%m%d
%A”

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

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

%a     星期的缩写(Sun..Sat) 

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

Today is Monday. 

  %n 换行

  %N 十亿分之一秒(000000000..999999999)

date命令参数

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

%X     时间(%H:%M:%S) 

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

date date –date=”@1291363421″ 竟然也行!!

date命令怎么样获得上星期的日子?

发表评论

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