三種方式實現刪除指定格式的過期文件

在實際項目中,經常遇到這樣的需求,比如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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章