2009-07-15 13 views
1

J'ai un peu de script qui supprime tous les fichiers .png dans un répertoire:Suppression de tous les fichiers d'un répertoire sur une taille de fichier donné chaque

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

Comment puis-je prendre un peu plus loin pour supprimer tous .png fichiers sur une certaine taille de fichier?

J'ai un autre morceau de script qui trouve la taille du fichier de tous les fichiers dans le répertoire:

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

Comment puis-je combiner les deux?

+0

utiliser si! if ($ bytes)> MAX –

+0

Pourquoi ne lancez-vous pas simplement "find/path/to/dir -type f -size + 1024k" comme commande shell ou via appel system()? –

Répondre

3

Vous pouvez utiliser une instruction if pour vérifier si la taille est supérieure au seuil:

$threshold = 1024; 

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

Merci pour toutes vos réponses, les gars. Ils ont tous très bien fonctionné! – baselinej70

1
$maxsize = 1024; // example 

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

Vous pouvez également utiliser le SPLiterators

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

(pourrait être un peu plus flexible ... mais ce n'est qu'un exemple)
Si vous voulez le supprimer récursivement, jetez un oeil au RecursiveDirectoryIterator

Questions connexes