PHP 디렉토리 안 모든 파일 삭제, 특정 확장자 파일 삭제, 특정 확장자 제외 파일 삭제

PHP 디렉토리 안 모든 파일 삭제, 특정 확장자 파일 삭제, 특정 확장자 제외 파일 삭제

 

PHP에서 디렉토리 안의 모든 파일을 삭제하는 방법,

디렉토리 안의 특정 확장자 파일만 삭제 하는 방법,

디렉토리 안의 특정 확장자 파일만 제외하고 삭제하는 방법을 알려드리도록 하겠습니다.

디렉토리 안의 모든 파일을 삭제하는 방법

function deleteFiles($pathDir){
  $dir = opendir($pathDir);
  while ($itemName = readdir($dir)) {
    unlink($pathDir.$itemName);
  }
  closedir($dir);
}

deleteFiles("./test_dir/");

 

코드를 간단하게만 설명드리자면,

입력한 경로를 opendir()로 연 뒤, readdir($dir)를 while 로 해당 경로의 모든 파일 이름을 가져옵니다.

그리고 unlink() 를 사용해 해당 경로의 파일을 삭제한 뒤, closedir()로 닫습니다.

 

 

 

파일 삭제 실행 전 후로 test_dir 디렉토리 안에 파일 존재를 보여드리기 위해 tree 명령어를 사용했습니다.

작성한 php 코드를 실행시켜 test_dir 디렉토리 안의 파일을 모두 삭제한 뒤,

다시 test_dir 디렉토리 안을 확인 하면 모든 파일이 삭제된 것을 확인하실 수 있습니다.

※ 참고로 위 Warning 부분은 현재 디렉토리 경로를 의미하는 ‘.’과 상위 디렉토리 경로를 의미하는 ‘..’ 을 지울 수 없다는 것입니다.

 

디렉토리 안의 특정 확장자 파일만 삭제 하는 방법

function deleteFilesWithSpecificExtension($pathDir, $extension){
  $dir = opendir($pathDir);
  while ($itemName = readdir($dir)) {
    $pathInfo = pathinfo($itemName);
    if($pathInfo['extension'] == $extension) unlink($pathDir.$itemName);
  }
  closedir($dir);
}

deleteFilesWithSpecificExtension("./test_dir/", "json");

모든 파일을 삭제하는 방법에서 크게 변경된 것은 없습니다.

 

 

pathinfo() 를 사용하면 파일에서 위와 같은 정보를 얻을 수 있습니다.

그 중 extension은 파일의 확장자를 의미합니다.

그 확장자와 일치하는 파일만 삭제하도록만 변경해주시면 되는 것입니다.

 

 

 

위와 같이 실제로 입력한 확장자의 파일만 모두 삭제된 것을 확인하실 수 있습니다.

 

디렉토리 안의 특정 확장자 파일만 제외하고 삭제하는 방법

function deleteFilesWithoutSpecificExtension($pathDir, $extension){
  $dir = opendir($pathDir);
  while ($itemName = readdir($dir)) {
    $pathInfo = pathinfo($itemName);
    if($pathInfo['extension'] != $extension) unlink($pathDir.$itemName);
  }
  closedir($dir);
}

deleteFilesWithoutSpecificExtension("./test_dir/", "json");

디렉토리 안의 특정 확장자 파일만 삭제하는 방법을 이해하셨다면 바로 아실겁니다.

확장자명을 일치하면 지우는 것이 아닌 일치하지 않으면 지우는 것으로 바꾸시기만 하면 됩니다.

 

 

 

위와 같이 실제로 입력한 확장자의 파일만 제외하고 모두 삭제된 것을 확인하실 수 있습니다.

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청사항은 언제든지 말씀해주세요!

피드백도 언제나 환영입니다!

 

감사합니다