图片 4

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里,后天的就放到二零一五-06-02里,…

%y 年的尾声八个数字

stamp=`expr $stamp2 – $stamp1`

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

实例:

6 日子非常大小

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

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

Mon Nov 15 23:00:01 PST 2010 

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

图片 2

$ date -d ‘dec 14 -2 weeks’ (相对:dec 14以此日子的两周前的日期)

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

参数:

%%    字符% 

还会有别的用法:

6、设按期间: date -s

total 4 

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


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

备份以时间做为文件名的

图片 3

%A    星期的欧洲经济共同体名称 (Sunday..Saturday) 

 

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

================================================================================================================

lastmonth=`date+%Y-%m –date=”-1 month”`”-01″;

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

$ echo “2010/11/15 23:00:02” >> date.txt 

   date -d “-2 day”
“+%Y%m%d %A”   或 date –date=”2 days ago””+%Y%m%d %A”

图片 4

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

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

<时间日期格式>

%s     从00:00:00 1969-01-01 UTC开端的秒数 

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

作业:删除目录下全数隐含  test 的文件或目录

Mon Nov 15 23:00:01 PST 2010 

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

选项:

短线(-):表示不填充数字域。

  %D 长期格式 (mm/dd/yy)

4、旧事中的 1234567890 秒:

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

有问题。。。。

$ date -I 

date+%s   可以获得UNIX的岁月戳;

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

%m    月份(01..12) 

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

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

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

%B     月份的总体名称(January..December) 

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

%m 月份     %w 三个星期的第几天  %d 贰个月的第几天

%N     纳秒(000000000..999999999) 

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

date命令 展现或设置系统时间和日期

%Z     时区(e.g., EDT), 无法确定时区则为空 

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




-s “字符串” 依据字符串来安装日期与时光。字符串供给有双引号

%F    日期,同%Y-%m-%d 

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

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

Linux下date命令用法

  %n 换行

date (选项) (参数)

%t     制表符 

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

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

2010-11-15 21:51:32 

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

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

%y     年份(00..99) 

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

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

2 获取当前几日期

[plain] view
plaincopy

上面查看包蕴 test 的文本夹find /App/ido/jobs  -type d -name “*test*”

%I     小时(01..12) 

已知日子戳,求当前几天子
date –date=”19700101 +$(($((`date +%s`))+(8*60*60))) sec” +%Y%m%d”
“%H:%M:%S
PS:从1967年0三月01日始发算, +$(($((`date +%s`))+(8*60*60))) sec
表示过了某些秒,当中(8*60*60)表示8个时辰,时区难点,作者国时间与世界时间相差8钟头。

2,输出昨日日子:

date “+%Y-%m-%d”   
#格式串中无法有空落落,如有,请将格式串全体放在双引号内

#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

这里一直报错。。没平常展现

举个例子,命令date“+%d/%m”的出口为“02/01”;命令date “+%-d/%-m”
结果为三分之二(1月1号的意趣);命令date +%_d/%_m的出口为“ 1/ 5”。

接下来 awk -v 作为多少个参数这样传进去轻巧点。

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

$ ls -l 

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

Today is Monday. 

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

Mon Nov 15 08:00:02 PST 2010 

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

$ date +”%x %X” 

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

2010-11-15 

  %h same as %b

%u     19日的第几天(1..7);  1 表示礼拜二 

  %r 12时辰制的岁月表示(时:分:秒,双位) time, 12-hour (hh:mm:ss
[AP]M)
  %奇骏 24小时制的日子表示 (时:分,双位)time, 24-hour (hh:mm)
  %s 自基础时间 1966-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脚本总括离本身寿辰还应该有稍稍天?

Mon Nov 15 23:00:02 PST 2010 

mkdir `date+%Y%m%d`

admin

相关文章

发表评论

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