PDA

Просмотр полной версии : Удаление файлов с определённым расширением.


marlen
09.03.2010, 20:41
Здравствуйте ребята!
Помогите написать PHP скрипт, который будет удалять все файлы с определённым расширением с заданных каталогов на сайте, намерен запускать скрипт через крон задания, главное, нужно одним запуском удалять файлы из нескольких папок на сайте.
Спасибо! + за мной

Deathdreams
09.03.2010, 20:46
Для одной папки:


$path = '/path'; //без слеша на конце
$ext = 'ini'; // без точки

if ($handle = opendir($path)) {

while (false !== ($file = readdir($handle))) {
$this_ext = end(explode(".", $file));
if( $this_ext == $ext ) if( @unlink($path."/".$file) ) { echo $path."/".$file." - success deleted!\r\n"; } else { echo $path."/".$file." - i can't delete this file\r\n"; }
}

closedir($handle);

} else { die('Can\'t open folder "'.$path.'"'); }



Для массива папок:



$paths = array('/path', '/tmp', '/home/www'); // везде без слеша на конце
$ext = 'ini'; // без точки

foreach( $paths as $n => $path ) {

if ($handle = opendir($path)) {

while (false !== ($file = readdir($handle))) {
$this_ext = end(explode(".", $file));
if( $this_ext == $ext ) if( @unlink($path."/".$file) ) { echo $path."/".$file." - success deleted!\r\n"; } else { echo $path."/".$file." - i can't delete this file\r\n"; }
}

closedir($handle);
} else { echo 'Can\'t open folder "'.$path.'"'; }

}

shellz[21h]
09.03.2010, 22:50
<?php
$paths = array('path1/', 'path2/');
$ext = 'txt';
foreach($paths as $p)
system("rm -f {$p}*.{$ext}");
?>

b3
09.03.2010, 23:28
Deathdreams
explode(".", $file)
А если имя файла "file.file.txt.exe" ?

shellz[21h]
А если system() нельзя, как на большинстве хостингов?

marlen
09.03.2010, 23:54
Deathdreams, Спасибо! работает.

shellz[21h], несработало, файлы не удалил скрипт, наверное у меня отключена функция system()

shellz[21h]
09.03.2010, 23:57
А если system() нельзя, как на большинстве хостингов?
на большинстве это на бесплатных, вариант не универсальный конечно)

Deathdreams
10.03.2010, 00:39
Deathdreams

А если имя файла "file.file.txt.exe" ?


А тебя учили полностью читать код, а не открывками ?

end(explode(".", $file));

Надеюсь, функция end() о чём-нибудь говорит.