您的位置:澳门新葡8455最新网站 > 服务器运维 > 澳门新葡8455最新网站shell脚本删除N天前的文件夹

澳门新葡8455最新网站shell脚本删除N天前的文件夹

发布时间:2019-10-07 09:33编辑:服务器运维浏览(167)

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

    背景:

    天天营造的东西,按日期放到分歧的文本夹里。如前天的创设放到贰零壹肆-06-01里,今天的就放置2014-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)
    

    澳门新葡8455最新网站 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]#澳门新葡8455最新网站, date

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

    [root@localhost network-scripts]#



    学业:删除目录下全体隐含  test 的公文或目录

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

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

    删去文件夹这里存在二个难题,是或不是强制删除”非空目录“,就未有删除

    上面查看包罗 test 的公文夹find /App/ido/jobs  -type d -name "*test*"

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

    澳门新葡8455最新网站 2

    4、故事中的 1234567890 秒:

    澳门新葡8455最新网站 3

    此地一向报错。。没日常展现

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

    6、设按期间: date -s

    澳门新葡8455最新网站 4

    本文由澳门新葡8455最新网站发布于服务器运维,转载请注明出处:澳门新葡8455最新网站shell脚本删除N天前的文件夹

    关键词: