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

Discussion in 'PHP' started by marlen, 9 Mar 2010.

  1. marlen

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Здравствуйте ребята!
    Помогите написать PHP скрипт, который будет удалять все файлы с определённым расширением с заданных каталогов на сайте, намерен запускать скрипт через крон задания, главное, нужно одним запуском удалять файлы из нескольких папок на сайте.
    Спасибо! + за мной
     
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Для одной папки:
    Code:
    
    $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.'"'); }
    
    
    Для массива папок:

    Code:
    
    $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.'"'; }
    
    }
    
    
     
    #2 Deathdreams, 9 Mar 2010
    Last edited: 9 Mar 2010
    1 person likes this.
  3. shellz[21h]

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    PHP:
    <?php
    $paths 
    = array('path1/',  'path2/');
    $ext 'txt';
    foreach(
    $paths as $p)
         
    system("rm -f {$p}*.{$ext}");
    ?>
     
  4. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Deathdreams
    А если имя файла "file.file.txt.exe" ?

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

    marlen New Member

    Joined:
    5 Apr 2008
    Messages:
    17
    Likes Received:
    2
    Reputations:
    0
    Deathdreams, Спасибо! работает.

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

    shellz[21h] Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    311
    Likes Received:
    68
    Reputations:
    6
    на большинстве это на бесплатных, вариант не универсальный конечно)
     
  7. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    А тебя учили полностью читать код, а не открывками ?

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

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