
17.02.2010, 02:38
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
Чистим хард
Я практически полностью забил свой винт на 250Гб. В папку downloads и заходить страшно - архивы папки... обычно я скачав архив разархивирую его в туже директорию в папку = имени архива. Разгрести все это руками не реально, поэтому я накидал скриптик, который шарится по винту ищет архивы и папки с их именами и удаляет все нафиг. Освободил ~9 Гб!!! места  теперь думаю проверять время создания и последнего доступа к файлам - и удалить нафиг древний хлам
PHP код:
<?php
// Сканирования каталогов на наличие дублирования имен архивных файлов и папок
// под Win (легко передалть под *nix) by Gar|k
// удаляет папки = имя архива
@set_time_limit(0);
@ini_set('max_execution_time',0);
define(FILE_TYPES,'zip|rar|gz|bz2');
function garik_rmdir($dir) {
$arr_dir=array();
$arr_file=array();
if (is_dir($dir)) { // если дира
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file=='.' || $file=='..') continue;
if(is_dir($dir . $file))
$arr_dir[]=$dir.$file;
else
if(preg_match("/(.*?)\.(".FILE_TYPES.")$/i",$file,$matches)) $arr_file[]=$dir.$matches[1];
}
closedir($dh);
}
}
$res=array_intersect($arr_dir,$arr_file);
foreach($res as $v) {
echo $v."\n";
system('rmdir /s /q "'.$v.'"'); // windows
}
}
// рекурсивная функция которая проходится по всем каталогам запуская там поиск
function recurse($dir) {
if(is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file=='.' || $file=='..') continue;
if(is_dir($dir . $file)) {
garik_rmdir($dir.$file.'\\');
recurse($dir.$file.'\\');
}
}
closedir($dh);
}
}
}
recurse("g:\\"); //понеслась
?>
З.Ы: скрипт тупой ) но может кто-то разберет на его примере работу с рекурсивными функциями и директориями
|
|
|