Linux下定期删除目录方法

采用脚本+crontab设置定时任务方案来实现。


1、写一个脚本del-file.sh,以下代码删除距当前时间超过10天以上目录,如以下代码:

#!/bin/bash

logFile=/opt/del.log

getCurTime(){

    echo `date "+%Y-%m-%d %H:%M:%S"`

}

delFile(){

    echo "$(getCurTime), start scan dir: $1" >> $logFile   

    dirList=()

    i=0


    for file in $1

    do

        if test -f $file

        then

            echo $file is file, not delete

        else

            if [ -d "$file" ]; then

                dirList[i++]=$file

            fi

        fi

    done


    if [ $i -le 0 ]; then

        echo "$(getCurTime), the dir is empty or not exists, dir: $1" >> $logFile

        return

    fi

    for item in ${dirList[*]}

    do 

        fileName=${item##*/}

        temp=`date -d "$fileName"`

        if [ -z "$temp" ]; then

            echo "$(getCurTime), the file is not legal, file: $item" >> $logFile

            continue

        fi

        day=$((($(date +%s) - $(date +%s -d "$fileName"))/86400))

        if [ $day -gt 10 ]; then

            rm -rf $item

            echo "$(getCurTime), del file: $item" >> $logFile

        fi

    done

    echo "$(getCurTime), end scan dir: $1" >> $logFile

}

echo "$(getCurTime), start work" >> $logFile

filePath="/opt/file1"

delFile "$filePath/*"

echo "$(getCurTime), end work" >> $logFile

2、crontab添加任务

    crontabl -e

    添加每天凌晨00:20执行任务:

    20 0 * * * sudo /opt/del-file.sh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容