我有一个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);
}
}
}
}
提前感谢您的回复。
答案 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);
}
};