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가 안전한가요?

내용이 남은 디렉터리를 지우지 않는다는 점에서는 안전합니다. 다만 지정 경로가 맞는지 확인해야 한다는 원칙은 동일합니다.

관련 글과 공식 문서

같은 카테고리의 다른 글
Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux rmdir 명령어로 빈 디렉터리와 비어 있는 상위 경로를 안전하게 삭제하는 방법을 설명합니다. rm -r과의 차이, 실패 원인과 스크립트 사용법도 알아봅니다.

Linux / 명령어 / su - 사용자 계정 전환

Linux / 명령어 / su - 사용자 계정 전환

Linux su 명령어로 다른 사용자 권한의 셸과 단일 명령을 실행하는 방법을 설명합니다. su와 su --login 차이, 환경 변수, PAM 인증, sudo·runuser 선택 기준과 보안 주의사항을 정리합니다.

Linux / 명령어 / date - 현재 시각 표시와 출력 형식 지정

Linux / 명령어 / date - 현재 시각 표시와 출력 형식 지정

Linux date 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / mkdir - 디렉터리 생성

Linux / 명령어 / mkdir - 디렉터리 생성

Linux mkdir 명령어로 디렉터리와 여러 단계의 상위 디렉터리를 만드는 방법을 설명합니다. 권한, umask, SELinux 환경과 자동화에서 안전하게 사용하는 방법도 정리합니다.

Linux 강좌 / 프로세스 확인·일시정지·종료하기

Linux 강좌 / 프로세스 확인·일시정지·종료하기

ps, top, pgrep으로 프로세스의 상태와 자원 사용량을 확인합니다. 실습 프로세스에 STOP, CONT, TERM을 보내고 셸 작업과 서비스의 차이를 익힙니다.

Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

apropos 명령어로 이름을 모르는 리눅스 명령과 매뉴얼을 기능 키워드로 찾는 방법을 설명합니다. 정규 표현식, 모든 키워드 일치, 섹션 제한과 검색 결과가 없을 때의 해결 방법을 다룹니다.

Linux 강좌 / 파일 시스템 이해하기 - 절대·상대 경로와 주요 디렉터리

Linux 강좌 / 파일 시스템 이해하기 - 절대·상대 경로와 주요 디렉터리

리눅스 파일 시스템의 트리 구조와 절대·상대 경로를 이해하고, /home·/etc·/var 등 주요 디렉터리의 역할과 경로를 읽는 방법을 익힙니다.

Linux / 명령어 / parted - 파티션 표와 빈 공간 확인·관리

Linux / 명령어 / parted - 파티션 표와 빈 공간 확인·관리

Linux parted 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / whoami - 현재 유효 사용자 이름 확인

Linux / 명령어 / whoami - 현재 유효 사용자 이름 확인

Linux whoami 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인

Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인

Linux pwd 명령어로 현재 작업 디렉터리를 확인하는 방법을 설명합니다. 논리적 경로와 물리적 경로, 셸 내장 명령과 PWD 변수의 차이도 함께 알아봅니다.