Как удалить ALL.txt файлы из каталога с использованием PHP


Я пытаюсь удалить ВСЕ текстовые файлы из каталога с помощью php-скрипта.

Вот что я попробовал.....

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

Я не получаю сообщение об ошибке при запуске, но оно не выполняет эту работу.

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

 4
Author: Ron, 2012-10-13

3 answers

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

Пример

$fullPath = __DIR__ . "/test/" ;
array_map('unlink', glob( "$fullPath*.log"))
 15
Author: Baba, 2012-10-13 03:15:35

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

// @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;

}
 3
Author: yoppuyoppu, 2012-10-14 04:10:06

Вы можете изменить приведенный ниже метод, но будьте осторожны. Убедитесь, что у вас есть разрешения на удаление файлов. Если все остальное не сработает, отправьте команду 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;
}
 1
Author: Coldstar, 2012-10-13 03:23:12