Belirli bir dosya boyutu üzerinde her biri bir dizinin tüm dosyaları silme

2 Cevap

. Ben bir dizindeki tüm png dosyaları siler komut biraz var:

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

Nasıl belirli bir dosya boyutu üzerinde her .png dosyaları silmek için bu bir adım daha ileri alıyoruz?

Ben dizindeki tüm dosyaların dosya boyutunu öğrenince dosyası başka bir bit var:

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

Nasıl iki birleştirmek mi?

2 Cevap

Sen boyutu eşiğin üstünde olup olmadığını kontrol etmek için bir if deyimi kullanabilirsiniz:

$threshold = 1024;

foreach (glob("*.png") as $filename) {
    $size = filesize($filename);
    if ($size > $threshold) {
        unlink($filename);
    }
}

Da kullanabilirsiniz SPL iterators

<?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";
}

(could be a bit more flexible ...but it's only an example)
If you want it to delete recursively take a look at the RecursiveDirectoryIterator