指定したフォーマットの期限切れファイルを削除するには、3つの方法があります.


実際のプロジェクトでは、mysqlバックアップファイルの削除、ログファイルの削除など、このようなニーズに遭遇することがよくあります.
この文章では3つの方法を提供して実現します
あるディレクトリの下の3日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)