728x90
반응형
파일서비스를 하다 보면, 불필요하게 비어 있는 디렉토리들이 우후죽순으로 생겨난다. 용량은 얼마 차지하지 않겠지만, 관리상 지저분한 면이 있으니, 깔끔한(?) 성격을 가진 관리자라면 이것 조차도 지우고 싶을 것이다. Windows 에서는 빈 디렉토리를 지울 수 있는 유틸리티를 이용해서 지워도 되고, Unix 계열이라면 find 를 이용해서 지울 수 있다.
다음 PHP 코드를 이용하면, 모든 OS에서 동일하게 빈 디렉토리를 삭제할 수 있다. 같은 일을 하는 코드를 찾아봤지만, 없어서 직접 구현해보았다. 간단하다, 모든 디렉토리를 순회하면서 해당 디렉토리 내에 파일/디렉토리가 있는지 검사해서 아무 것도 없으면, 삭제 대상으로 등록하고, 나중에 한방에 지우도록 한 것이다.
// -----------------------------------------
// 빈 디렉토리 삭제
// -----------------------------------------
$dst_dir = "C:\\";
// -----------------------------------------
function find_empty_folder($dst_dir)
{
$result = array();
$i = 0;
$rdi = new RecursiveDirectoryIterator($dst_dir);
try {
foreach (new RecursiveIteratorIterator($rdi,
RecursiveIteratorIterator::SELF_FIRST,
RecursiveIteratorIterator::CATCH_GET_CHILD) as $path) {
if ($path->isDir()) {
if(2 == count(scandir($path->__toString()))) {
$result[$i++] = $path->__toString();
}
}
}
} catch(Exception $e) {
echo "Message: ".$e->getMessage();
}
return $result;
}
$list_empty_folder = find_empty_folder($dst_dir);
foreach($list_empty_folder as $empty_folder) {
echo $empty_folder."\n";
unlink($empty_folder);
}
728x90
반응형
'Programming > PHP' 카테고리의 다른 글
(PHP) Ubuntu 20.04 + nginx + php-fpm(FastCGI) 설치 (0) | 2021.08.20 |
---|---|
(PHP) Debian(wheezy) + nginx + php-fpm(FastCGI) + php-apc (0) | 2011.09.14 |
(PHP) 윈도우 폴더 크기 구하기 (0) | 2011.05.10 |
(PHP) 10MB 이상의 파일중에서 중복된 파일 찾기 (0) | 2011.05.04 |
(PHP) CentOS+Apache+PHP+CodeIgniter+PGSQL (0) | 2011.04.27 |
댓글