2012-10-13 4 views
3

Im пытается удалить ВСЕ текстовые файлы из каталога с помощью php-скрипта.Как удалить ВСЕ файлы .txt из справочника с помощью PHP

Вот что я пытался .....

<?php array_map('unlink', glob("/paste/*.txt")); ?> 

я не получаю ошибку, когда я запускаю это, но это не делает работу.

Есть ли фрагмент для этого? Я не уверен, что еще попробовать.

+0

Не существует ошибки, я сказал, что выше. – Ron

+0

Является ли путь '/ paste/*. Txt' правильным? Паровая директория находится под '/' – xdazz

+0

Баба Помог мне, я не использовал полный путь, мне пришлось включить/home/user/ect ... Я получил это сейчас, должен ждать, чтобы принять его ответ. – Ron

ответ

13

Ваше Выполнение работ все, что вам нужно сделать, это использовать Use full PATH

Пример

$fullPath = __DIR__ . "/test/" ; 
array_map('unlink', glob("$fullPath*.log")) 
+0

Но он уже использует полный путь. – xdazz

+1

Он не использует .... есть '__DIR__' в моем – Baba

+0

Спасибо, я не знал, в чём проблема, Спасибо, что расчистил его для меня. – Ron

1

Вы можете изменить метод ниже, но будьте осторожны. Убедитесь, что у вас есть разрешения на удаление файлов. Если все остальное терпит неудачу, послать команду EXEC и пусть Linux это сделать

static function getFiles($directory) { 
    $looper = new RecursiveDirectoryIterator($directory); 
    foreach (new RecursiveIteratorIterator($looper) as $filename => $cur) { 
     $ext = trim($cur->getExtension()); 
     if($ext=="txt"){ 
      // remove file: 
     } 
    } 
    return $out; 
} 
3

я расширил Поданные отвечает на немного, так что вы можете гибко и рекурсивно разъединить текстовые файлы, расположенные под, как это часто бывает.

// @param string Target directory 
// @param string Target file extension 
// @return boolean True on success, False on failure 

function unlink_recursive($dir_name, $ext) { 

    // Exit if there's no such directory 
    if (!file_exists($dir_name)) { 
     return false; 
    } 

    // Open the target directory 
    $dir_handle = dir($dir_name); 

    // Take entries in the directory one at a time 
    while (false !== ($entry = $dir_handle->read())) { 

     if ($entry == '.' || $entry == '..') { 
      continue; 
     } 

     $abs_name = "$dir_name/$entry"; 

     if (is_file($abs_name) && preg_match("/^.+\.$ext$/", $entry)) { 
      if (unlink($abs_name)) { 
       continue; 
      } 
      return false; 
     } 

     // Recurse on the children if the current entry happens to be a "directory" 
     if (is_dir($abs_name) || is_link($abs_name)) { 
      unlink_recursive($abs_name, $ext); 
     } 

    } 

    $dir_handle->close(); 
    return true; 

} 
Смежные вопросы