Удаление всех файлов каталога с указанным размером файла каждый - PullRequest
1 голос
/ 15 июля 2009

У меня есть небольшой скрипт, который удаляет все файлы .png в каталоге:

foreach (glob("*.png") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
    unlink($filename);
}

Как сделать еще один шаг, чтобы удалить все .png файлы определенного размера?

У меня есть еще один бит скрипта, который определяет размер всех файлов в каталоге:

$bytes = filesize('example.png');

Как мне объединить два?

Ответы [ 3 ]

3 голосов
/ 15 июля 2009

Вы можете использовать оператор if , чтобы проверить, превышает ли размер пороговое значение:

$threshold = 1024;

foreach (glob("*.png") as $filename) {
    $size = filesize($filename);
    if ($size > $threshold) {
        unlink($filename);
    }
}
1 голос
/ 15 июля 2009

Вы также можете использовать SPL итераторы

<?php
$path = '.';
class MyFilter extends FilterIterator  {
    public function accept() {
        $fi = $this->getInnerIterator()->current();
        return strlen($fi)-4===strripos($fi, '.png') && 1024 < $fi->getSize();
    }

}
foreach (new MyFilter(new DirectoryIterator($path)) as $deleteInfo) {
    echo $deleteInfo, "\n";
}

(может быть немного более гибким ... но это только пример)
Если вы хотите его рекурсивное удаление, взгляните на RecursiveDirectoryIterator

1 голос
/ 15 июля 2009
$maxsize = 1024; // example

foreach (glob("*.png") as $filename)
{
    $filesize = filesize($filename);
    echo "$filename size " .$filesize . "\n";
    if ($filesize > $maxsize)
        unlink($filename);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...