리눅스 / 명령어 / rmdir / 빈 디렉토리 삭제하는 명령어

Linux의 rmdir은 비어 있는 디렉터리를 삭제하는 명령입니다. 파일이나 하위 디렉터리가 들어 있으면 삭제하지 않으므로, 내용을 보존하면서 빈 디렉터리만 정리할 때 사용할 수 있습니다.

빈 디렉터리 삭제하기

다음과 같이 삭제할 디렉터리의 경로를 지정합니다. 상대 경로는 현재 작업 디렉터리를 기준으로 해석되므로, 실행 전에 pwd와 ls -la로 위치와 대상을 확인하세요.

rmdir empty-dir

디렉터리가 비어 있으면 보통 아무 출력 없이 삭제됩니다. 파일이나 다른 디렉터리가 있으면 삭제되지 않고 Directory not empty 등의 오류가 표시됩니다. 오류 문구는 시스템 언어에 따라 다릅니다. 삭제된 디렉터리는 일반적으로 휴지통으로 이동하지 않으므로 필요한 위치인지 확인하세요.

여러 디렉터리를 지정하면 각각 삭제를 시도합니다. 일부가 비어 있지 않아 실패해도 다른 대상은 삭제될 수 있으므로 전체가 한 번에 성공하거나 취소되는 작업으로 생각하면 안 됩니다.

rmdir first-dir second-dir

직접 확인하는 실습

기존 파일과 겹치지 않는 위치에서 다음 실습을 진행하세요. rmdir-practice가 이미 있다면 다른 이름을 선택하고, 디렉터리 생성이 실패하면 다음 명령을 실행하지 마세요. 다른 이름을 사용한다면 아래 명령의 rmdir-practice도 같은 이름으로 바꾸세요.

mkdir rmdir-practice

생성에 성공하면 다음 명령으로 실습 디렉터리에 들어가 빈 디렉터리와 파일이 있는 디렉터리를 만듭니다.

cd rmdir-practice
mkdir empty busy
touch busy/example.txt

empty는 비어 있고 busy에는 파일이 있습니다. 두 디렉터리를 차례로 삭제해 봅니다.

rmdir empty
rmdir busy

첫 명령은 empty를 삭제합니다. 두 번째는 busy가 비어 있지 않아 실패하고 파일도 그대로 남습니다. 다음 명령으로 숨김 항목까지 확인할 수 있습니다.

ls -la busy

출력의 .와 ..는 현재 및 상위 디렉터리를 가리키는 항목입니다. 그 외에 파일이나 하위 디렉터리가 있으면 비어 있는 상태가 아닙니다. 이어지는 -p 실습도 이 디렉터리에서 진행합니다. 실습 파일을 제거할 때는 대상을 먼저 확인하세요.

상위 디렉터리까지 삭제하는 -p

-p 또는 --parents는 지정한 디렉터리부터 경로의 상위 디렉터리를 차례로 삭제하려고 합니다. 각 디렉터리가 그 시점에 비어 있어야 합니다. 실습 디렉터리 안에서 다음과 같이 확인할 수 있습니다.

mkdir -p a/b/c
rmdir -p a/b/c

다른 내용이 없다면 c, b, a 순서로 삭제됩니다. 상위 디렉터리에 다른 파일이 있으면 하위 디렉터리는 이미 삭제된 뒤 상위 디렉터리 삭제가 실패할 수 있습니다. 따라서 실행 전에 경로 전체가 삭제 대상인지 확인하세요. 실습을 마치면 cd ..로 상위 디렉터리로 돌아갑니다.

작업 표시와 비어 있지 않은 디렉터리 무시

-v 또는 --verbose는 처리 중인 디렉터리에 대한 메시지를 표시합니다. 오류 메시지도 확인해 실제 삭제 여부를 판단하세요.

rmdir -v empty-dir

GNU rmdir의 --ignore-fail-on-non-empty는 디렉터리가 비어 있지 않아서 발생한 삭제 실패를 무시합니다. 해당 디렉터리나 그 내용은 삭제되지 않습니다. 다음 명령은 실습 디렉터리의 상위 위치에서 실행합니다.

rmdir --ignore-fail-on-non-empty rmdir-practice/busy

이 옵션은 비어 있지 않은 경우만 무시합니다. 경로가 없거나 권한이 없는 등 다른 오류까지 무시하는 옵션은 아닙니다. 무시된 실패만 있다면 종료 상태가 성공으로 표시될 수 있으므로, 종료 상태만으로 모든 디렉터리가 삭제됐다고 판단하지 마세요. 옵션의 자세한 동작은 GNU rmdir 매뉴얼에서 확인할 수 있습니다.

삭제되지 않을 때 확인하기

  • 비어 있지 않음: ls -la directory에서 directory를 실제 경로로 바꿔 숨김 파일과 하위 디렉터리를 확인합니다. 일반적인 ls에서는 이름이 점으로 시작하는 항목이 보이지 않을 수 있습니다.
  • 권한 문제: 대상과 부모 디렉터리의 권한, 소유자 및 파일 시스템 상태를 확인하세요. 삭제에는 일반적으로 부모 디렉터리의 쓰기·검색 권한이 필요하며, 다른 제한이 적용될 수도 있습니다.
  • 경로 또는 대상 문제: 이름과 현재 위치를 확인합니다. 디렉터리를 가리키는 심볼릭 링크는 디렉터리 자체와 다르므로 ls -ld로 확인하세요.

rmdir *처럼 와일드카드를 사용하면 셸이 현재 디렉터리의 여러 이름을 명령에 전달합니다. 파일도 포함될 수 있고 보통 숨김 이름은 포함되지 않으므로, 먼저 ls -la로 대상을 확인하고 필요한 디렉터리를 명시하는 편이 안전합니다. 파일이 들어 있는 디렉터리를 삭제해야 한다면 rmdir으로는 할 수 없으며, 파일 삭제는 별도로 내용을 검토한 후 결정하세요.