删除文件夹

时间:2015-07-28 08:25:02

标签: php

我有一个cronjob,每天都会删除所有未使用的文件,但我希望更进一步。我的文件是此结构name_number.jpg,但有些文件具有此结构name_.jpg

目前我的脚本没有任何区别并且全部删除。我希望脚本删除name_number.jpg而不删除没有数字的文件。

$days = 1;  
$path = './result/';  

// Open the directory  
if ($handle = opendir($path))  
{  
    // Loop through the directory  
    while (false !== ($file = readdir($handle)))  
    {  
        // Check the file we're doing is actually a file  
        if (is_file($path.$file))  
        {  
            // Check if the file is older than X days old  
            if (filemtime($path.$file) < ( time() - ( $days * 24 * 60 * 60 ) ) )  
            {  
                // Do the deletion  
                unlink($path.$file);  
            }  
        }  
    }  
}

提前感谢您的回复。

1 个答案:

答案 0 :(得分:2)

使用迭代器:

$days = 1;

$fsi = new RegexIterator(
    new FilesystemIterator('/path/to/your/files'),
    '(.+_\d+\.jpg$)'
);
/** @var SplFileObject $file */
foreach ($fsi as $file) {
    if ($file->isFile() && $file->getMTime() < strtotime("-$days day")) {
        unlink($file);
    }
}

功能方法:

$days = 1;

array_map(
    function($file) use ($days) {
        if (!is_dir($file) && filemtime($file) < strtotime("-$days day")) {
            unlink($file);
        }
    },
    glob('/path/to/your/files/*_[1-9].jpg')
);

旧的当务之急:

$days = 1;

foreach (glob('/path/to/your/files/*_[1-9].jpg') as $file) {
    if (!is_dir($file) && filemtime($file) < strtotime("-$days day")) {
        unlink($file);
    }
};