刪除指定目錄下指定字尾的檔案

AreoWarm發表於2018-07-29
//定時清除計劃任務日誌檔案,避免佔用太大磁碟空間
$folderpath = "/www/server/log";//要操作的目錄
$deltype = array('log');
foreach ($deltype as $file_type) {
    clearn_file($folderpath, $file_type);
}


/**
 *@param $path資料夾絕對路徑 $file_type待刪除檔案的字尾名
 *return void
 */
function clearn_file($path, $file_type = 'bak')
{
    //判斷要清除的檔案型別是否合格
    if (!preg_match('/^[a-zA-Z]{2,}$/', $file_type)) {
        return false;
    }
    //當前路徑是否為資料夾或可讀的檔案
    if (!is_dir($path) || !is_readable($path)) {
        return false;
    }
    //遍歷當前目錄下所有檔案
    $all_files = scandir($path);
    foreach ($all_files as $filename) {
        //跳過當前目錄和上一級目錄
        if (in_array($filename, array(".", ".."))) {
            continue;
        }
        //進入到$filename資料夾下
        $full_name = $path . '/' . $filename;
        //判斷當前路徑是否是一個資料夾,是則遞迴呼叫函式
        //否則判斷檔案型別,匹配則刪除
        if (is_dir($full_name)) {
            clearn_file($full_name, $file_type);
        } else {
            preg_match("/(.*)\.$file_type/", $filename, $match);
            if (!empty($match[0][0])) {
                echo $full_name;
                echo '\n\n';
                unlink($full_name);
            }
        }
    }
}

多謝:網友

相關文章