Linux / 명령어 / rmdir - 빈 디렉터리 삭제
rmdir은 내용이 없는 디렉터리만 삭제하는 명령입니다. 파일이나 하위 디렉터리가 남아 있으면 실패하므로, 재귀 삭제가 필요하지 않은 상황에서 의도하지 않은 데이터 삭제를 막는 안전장치가 됩니다.
이 글에서는 기본 사용법, -p로 빈 부모 디렉터리를 함께 제거하는 방법, 삭제 실패 원인과 rm -r과의 차이를 설명합니다.
rmdir 명령어란?
rmdir은 지정한 빈 디렉터리를 제거합니다. 숨김 파일을 포함한 항목이 하나라도 있으면 삭제하지 않으며, 일반 파일에도 사용할 수 없습니다. 디렉터리 자체를 삭제할 권한은 그 디렉터리 내부가 아니라 부모 디렉터리의 쓰기·실행 권한과 관련됩니다.
기본 문법
rmdir [옵션] 디렉터리 ...
파일명이나 경로에 공백이 있으면 따옴표로 감싸고, 하이픈으로 시작하는 이름은 가능한 경우 -- 뒤에 지정합니다. 지원 옵션은 배포판과 GNU Coreutils 버전에 따라 다를 수 있으므로 rmdir --help와 man rmdir으로 현재 시스템의 설명을 확인하세요.
rmdir 기본 사용법
빈 디렉터리 하나 삭제하기
대상 디렉터리에 항목이 없으면 삭제됩니다.
rmdir old-cache
여러 빈 디렉터리 삭제하기
여러 경로를 지정하면 각 경로를 순서대로 처리합니다. 일부가 실패할 수 있으므로 종료 상태와 메시지를 확인하세요.
rmdir empty-a empty-b empty-c
빈 부모 디렉터리까지 제거하기
-p는 지정한 경로를 지운 뒤 비어 있는 부모를 차례로 제거합니다. 예를 들어 아래 명령은 a/b/c, a/b, a 순서로 시도합니다.
rmdir -p a/b/c
빈 디렉터리 제거 결과 확인하기
rmdir는 빈 디렉터리를 제거할 때 별도 메시지를 내지 않습니다. 임시로 만든 대상에만 아래 예제를 적용하세요.
mkdir empty-demo rmdir empty-demo test ! -e empty-demo echo $?
예시 출력은 0입니다. 이는 test에서 경로가 존재하지 않는다는 조건이 참이었다는 뜻입니다. 디렉터리 안에 숨김 파일이라도 있으면 rmdir가 실패하므로 먼저 내용을 확인하세요.
주요 옵션
| 옵션 | 설명 |
|---|---|
-p, --parents |
대상과 비어 있는 상위 디렉터리를 차례로 제거합니다. |
-v, --verbose |
처리하는 각 디렉터리에 대한 메시지를 출력합니다. |
--ignore-fail-on-non-empty |
디렉터리가 비어 있지 않아 발생한 실패 진단을 무시합니다. |
긴 옵션은 의미를 파악하기 쉽고 스크립트 검토에도 도움이 됩니다. 다만 이식성이 중요한 스크립트에서는 대상 시스템이 해당 GNU 확장 옵션을 지원하는지 먼저 확인하세요.
실전 활용 예제
정말 비어 있는지 확인하기
일반 ls는 숨김 항목을 놓칠 수 있습니다. 삭제가 실패하면 ls -la나 find로 내부 항목을 확인하세요.
ls -la old-cache find old-cache -mindepth 1 -maxdepth 1 -print
스크립트에서 빈 경우에만 정리하기
비어 있지 않으면 그대로 남겨야 하는 정리 작업에 적합합니다. 실패를 무조건 숨기기보다 예상한 원인인지 구분합니다.
if rmdir -- cache-dir 2>/dev/null; then printf '%s\n' '빈 캐시 디렉터리를 제거했습니다.' fi
긴 빈 경로를 단계적으로 정리하기
-pv를 함께 사용하면 어느 단계까지 삭제됐는지 확인하기 쉽습니다. 보존해야 할 상위 경로가 있다면 -p 대신 각 경로를 명시적으로 삭제하세요.
rmdir -pv build/tmp/session
rmdir와 관련 명령 비교
| 명령·방법 | 주요 역할 | 적합한 상황 |
|---|---|---|
rmdir |
빈 디렉터리만 제거 | 내용이 남아 있으면 보존해야 할 때 |
rm -d |
빈 디렉터리 제거 가능 | GNU rm 문맥에서 파일과 함께 처리할 때 |
rm -r |
내용을 포함해 재귀 삭제 | 전체 트리를 의도적으로 제거할 때 |
find -empty -delete |
조건에 맞는 빈 항목 탐색·삭제 | 여러 빈 경로를 규칙으로 정리할 때 |
사용할 때 주의할 점
숨김 파일도 내용이다
.keep나 .gitignore 같은 숨김 파일이 있으면 빈 디렉터리가 아니므로 삭제되지 않습니다.
-p의 범위를 확인한다
깊은 경로를 지정하면 예상보다 높은 부모까지 비어 있는 경우 함께 지워질 수 있습니다. 보존 경계를 명확히 정하세요.
실패를 무조건 오류로만 보지 않는다
비어 있지 않아 실패한 것은 데이터가 남아 있다는 신호일 수 있습니다. 자동화에서는 원인을 확인한 뒤 계속 진행할지 결정하세요.
FAQ
파일이 들어 있는 디렉터리도 rmdir로 삭제할 수 있나요?
아닙니다. rmdir은 빈 디렉터리만 삭제합니다. 내용까지 삭제하려면 범위를 확인한 뒤 rm -r을 사용해야 합니다.
비어 보이는데 삭제되지 않는 이유는 무엇인가요?
숨김 파일이나 마운트 지점, 권한 문제일 수 있습니다. ls -la와 find로 내용을 확인하세요.
부모 디렉터리까지 한 번에 지우려면 어떻게 하나요?
rmdir -p 경로를 사용합니다. 각 단계가 비어 있을 때만 삭제됩니다.
rm -r보다 rmdir가 안전한가요?
내용이 남은 디렉터리를 지우지 않는다는 점에서는 안전합니다. 다만 지정 경로가 맞는지 확인해야 한다는 원칙은 동일합니다.









