在實際項目中,經常遇到這樣的需求,比如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)