三种方式实现删除指定格式的过期文件

在实际项目中,经常遇到这样的需求,比如mysql备份文件删除,日志文件删除

该文章中提供三种方法来实现

删除某个目录下的三天5小时之前的后缀为txt的文件

一,shell脚本方式

0 0 * * * find /home/test -name "*.txt" -type f -cmin +4620 -exec rm {} \;

二,php方式

/*
 * 删除文件夹下$time分钟前创建的文件
 * crontab 添加定时任务
 * @param $dir 要处理的目录,物理路径
 * @param $time 过期时间 时间戳
 * @return void
 */
function delFile($dir, $time){
    if(is_dir($dir)){
        if($dh=opendir($dir)){
            while (false !== ($file = readdir($dh))){
                if($file!="." && $file!=".."){
                    $fullpath=$dir."/".$file;
                    if(!is_dir($fullpath)){
                        $filedate=filectime($fullpath);
                        if ( $filedate <= $time && preg_match( "/\.txt$/i" , $fullpath )) {
                            unlink($fullpath); //删除文件
                        }
                    }
                }
            }
        }
        closedir($dh);
    }
}


delFile("C:\\Users\\EDZ\\Desktop\\file", time() - 277200);

三,python方式

import os
import sys
import time

# crontab 添加定时任务
def del_file(dir, t):
    # 获取目录下所有文件和文件夹
    files = os.listdir(dir)
    for file in files:
        file_path = dir + "/" + file
        # 判断是否是文件
        if os.path.isfile(file_path) & file.endswith('.txt'):
            # 最后一次修改的时间
            last = int(os.stat(file_path).st_mtime)
            # 删除过期文件
            if last <= t:
                os.remove(file_path)
        elif os.path.isdir(file_path):
            # 如果是文件夹,继续遍历删除
            del_file(file_path, t)


# 3天5小时 277200秒
del_time = int(time.time()) - 277200
del_file("C:\\Users\\EDZ\\Desktop\\file", del_time)

你可能感兴趣的:(PHP,Linux,python)