LINUX.ORG.RU

рекурсивное удаление


0

0

Подскажите пожалуйста алгоритм рекурсивного удаления, программа на С.
Есть раздел на котором множество папок с файлами, с них нужно удалить временные файлы. Заранее спасибо.


Исходники rm посмотри из coreutils, раз уж сам не можешь такую фигню написать.

anotheranonymous
()

>Есть раздел на котором множество папок с файлами, с них нужно удалить временные файлы

find /home/video/tmp -iname "*.tmp" -exec rm {} \;

KRoN73 ★★★★★
()

вот пример на Глобальном И Надежном с оффсайта Гобального И Надежного. адаптировать я думаю, сам сможешь, ибо принцип понятен.

function unlinkRecursive($dir, $deleteRootToo)
{
    if(!$dh = @opendir($dir))
    {
        return;
    }
    while (false !== ($obj = readdir($dh)))
    {
        if($obj == '.' || $obj == '..')
        {
            continue;
        }

        if (!@unlink($dir . '/' . $obj))
        {
            unlinkRecursive($dir.'/'.$obj, true);
        }
    }

    closedir($dh);
   
    if ($deleteRootToo)
    {
        @rmdir($dir);
    }
   
    return;
} 

isden ★★★★★
()
Ответ на: комментарий от anotheranonymous

То был юмор :).

Кстати, зачастую, когда задача легко решается на шелле а на сях писать её заколебаться system не такой уж плохой метод :). Но лучше этого избегать.

true_admin ★★★★★
()
Ответ на: комментарий от anotheranonymous

> По моему за такое руки надо отрывать :)

Если производительность не важна и переносимости не требуется, почему бы и нет? Читается код легко...

eXOR ★★★★★
()
Ответ на: комментарий от Balthazar

Если в указаном примере нет обработки ошибок не значит что их не может быть в принципе с таким подходом. К тому же бывают ситуации когда ошибки в общем то глубоко фиолетовы. И подобного рода хаки как раз делают в таких ситуациях.

eXOR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.