PHP : 빈 디렉토리 삭제하기
파일서비스를 하다 보면, 불필요하게 비어 있는 디렉토리들이 우후죽순으로 생겨난다. 용량은 얼마 차지하지 않겠지만, 관리상 지저분한 면이 있으니, 깔끔한(?) 성격을 가진 관리자라면 이것 조차도 지우고 싶을 것이다. Windows 에서는 빈 디렉토리를 지울 수 있는 유틸리티를 이용해서 지워도 되고, Unix 계열이라면 find 를 이용해서 지울 수 있다.
다음 PHP 코드를 이용하면, 모든 OS에서 동일하게 빈 디렉토리를 삭제할 수 있다. 같은 일을 하는 코드를 찾아봤지만, 없어서 직접 구현해보았다. 간단하다, 모든 디렉토리를 순회하면서 해당 디렉토리 내에 파일/디렉토리가 있는지 검사해서 아무 것도 없으면, 삭제 대상으로 등록하고, 나중에 한방에 지우도록 한 것이다.
다음 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); }
댓글
댓글 쓰기