Linux 터미널에서 파일 및 디렉토리를 삭제하는 방법

rm과 rmdir 명령어는 리눅스, macOS 및 유닉스 계열 운영체제에서 파일과 폴더를 제거하는 데 사용됩니다. 이는 윈도우나 DOS 환경의 del, deltree 명령어와 유사합니다. 이 명령어들은 매우 강력하며 다양한 옵션을 제공합니다.

rm과 rmdir 명령어로 삭제된 파일 및 폴더는 휴지통으로 이동하지 않고 즉시 시스템에서 영구적으로 제거됩니다. 따라서 실수로 파일을 삭제했을 경우, 백업을 통해서만 복구가 가능합니다.

rm 명령어로 파일 삭제하기

가장 기본적인 사용법은 현재 폴더에서 하나의 파일을 삭제하는 것입니다. rm 명령어 뒤에 공백을 두고 삭제하고자 하는 파일명을 입력합니다.

rm 파일_이름.txt

만약 삭제하려는 파일이 현재 작업 폴더에 없다면, 파일 경로를 함께 지정해야 합니다.

rm ./경로/파일/위치/파일_이름.txt

하나 이상의 파일명을 rm 명령어에 전달하여 여러 개의 파일을 동시에 삭제할 수 있습니다.

rm 파일_2.txt 파일_3.txt

와일드카드를 사용하여 특정 패턴의 파일 그룹을 선택하여 삭제할 수도 있습니다. *는 여러 문자를, ?는 하나의 문자를 대체합니다. 다음 명령은 현재 폴더 내 모든 PNG 이미지 파일을 삭제합니다.

rm *.png

다음 명령은 단일 문자 확장자를 가진 모든 파일을 삭제합니다. 예를 들어, ‘파일.1’과 ‘파일.2’는 삭제되지만 ‘파일.12’는 삭제되지 않습니다.

rm *.?

파일이 쓰기 금지 상태일 경우, 파일 삭제 전에 확인 메시지가 나타납니다. 이때 ‘y’ 또는 ‘n’으로 응답하고 ‘Enter’ 키를 눌러야 합니다.

와일드카드와 함께 rm 명령어를 사용할 때 발생할 수 있는 위험을 줄이려면 -i(대화형) 옵션을 사용하세요. 이 옵션은 각 파일을 삭제하기 전에 사용자에게 확인을 요청합니다.

rm -i *.dat

-f(강제) 옵션은 대화형 모드의 반대 기능을 합니다. 파일이 쓰기 금지된 경우에도 확인 메시지 없이 강제로 삭제합니다.

rm -f 파일명

rm 명령어로 폴더 삭제하기

비어 있는 폴더를 삭제하려면 -d(디렉토리) 옵션을 사용합니다. 파일 이름과 마찬가지로, 폴더 이름에도 와일드카드(*?)를 사용할 수 있습니다.

rm -d 폴더명

두 개 이상의 폴더 이름을 지정하여 여러 개의 비어 있는 폴더를 한 번에 삭제할 수 있습니다.

rm -d 폴더1 폴더2 /경로/폴더3

내부에 파일이나 폴더가 있는 비어 있지 않은 폴더를 삭제하려면 -r(재귀) 옵션을 사용해야 합니다. 이 옵션을 사용하면 폴더 및 그 안에 포함된 모든 파일과 하위 폴더가 삭제됩니다.

rm -r 폴더1 폴더2 폴더3

폴더 또는 파일이 쓰기 금지 상태인 경우 삭제 전에 확인 메시지가 표시됩니다. 비어 있지 않은 폴더를 삭제하면서 이러한 메시지를 표시하지 않으려면 -r(재귀) 및 -f(강제) 옵션을 함께 사용해야 합니다.

rm -rf 폴더

주의해야 할 점은 rm -rf 명령어를 잘못 사용하면 데이터 손실이나 시스템 오작동을 초래할 수 있다는 것입니다. 따라서 사용에 신중을 기해야 합니다. rm -rf 명령어 사용 전에 tree 명령어를 사용하여 삭제될 파일 및 폴더 구조를 파악하는 것이 좋습니다.

우분투 또는 데비안 기반 배포판을 사용하는 경우, apt-get을 사용하여 시스템에 tree 패키지를 설치할 수 있습니다. 다른 리눅스 배포판에서는 해당 배포판의 패키지 관리 도구를 사용하면 됩니다.

sudo apt-get install tree

tree 명령어를 실행하면 해당 명령이 실행된 폴더 아래의 폴더 구조와 파일들을 시각적으로 보여줍니다.

tree

tree 명령어에 특정 경로를 지정하여 파일 시스템의 다른 폴더에서 트리 구조를 시작하도록 할 수도 있습니다.

tree 경로/폴더

rm 명령어는 –one-file-system, –no-preserve-root, –preserve-root 등의 추가 옵션도 제공하지만 고급 사용자에게만 권장됩니다. 잘못 사용하면 시스템 파일 전체가 삭제될 위험이 있습니다. 자세한 내용은 매뉴얼 페이지를 참고하세요.

rmdir 명령어로 폴더 삭제하기

폴더를 삭제하는 데 사용할 수 있는 또 다른 명령어는 rmdir입니다. rm 명령어와 rmdir 명령어의 차이점은 rmdir은 비어 있는 폴더만 삭제할 수 있다는 것입니다. 파일은 삭제하지 않습니다.

가장 간단한 사용법은 하나의 빈 폴더를 삭제하는 것입니다. rm 명령어와 마찬가지로, 여러 폴더 이름을 rmdir 명령어에 전달하거나 폴더 경로를 함께 지정할 수 있습니다.

rmdir 명령어에 이름을 전달하여 현재 폴더에서 하나의 폴더를 삭제합니다.

rmdir 폴더명

rmdir 명령어에 이름 목록을 전달하여 여러 폴더를 동시에 삭제합니다.

rmdir 폴더1 폴더2 폴더3

해당 폴더의 전체 경로를 지정하여 현재 폴더에 없는 폴더를 삭제합니다.

rmdir /경로/폴더

비어 있지 않은 폴더를 삭제하려고 하면 rmdir은 오류 메시지를 표시합니다. 다음 예시에서 rmdir은 클라이언트 폴더를 성공적으로 삭제하지만, 프로젝트 폴더는 파일이 포함되어 있어 삭제를 거부합니다. 프로젝트 폴더와 그 안의 파일은 그대로 유지됩니다.

rmdir이 “디렉토리가 비어 있지 않음” 오류를 표시하면 명령줄에서 전달된 폴더 처리를 중단합니다. 예를 들어, 네 개의 폴더를 삭제하도록 요청했지만 첫 번째 폴더에 파일이 있는 경우, rmdir은 오류 메시지를 표시하고 더 이상 아무 작업도 수행하지 않습니다. 다른 폴더를 처리하려면 –ignore-fail-on-non-empty 옵션을 사용하여 이러한 오류를 무시하도록 강제할 수 있습니다.

다음 예제에서 두 개의 폴더(work/reportswork/quotes)가 rmdir에 전달되었습니다. –ignore-fail-on-non-empty 옵션이 명령에 포함되어 있습니다. work/reports 폴더에는 파일이 있으므로 rmdir에서 삭제할 수 없습니다. 그러나 –ignore-fail-on-non-empty 옵션 때문에 rmdir은 오류를 무시하고 다음 폴더인 work/quotes로 이동합니다. 이 폴더는 비어 있으므로 rmdir은 삭제합니다.

사용된 명령어는 다음과 같습니다.

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

-p(parents) 옵션을 사용하면 폴더를 삭제하면서 상위 폴더도 함께 삭제할 수 있습니다. rmdir이 대상 폴더부터 시작하여 상위 폴더로 올라가는 방식으로 작동하기 때문에 가능합니다. 상위 폴더는 삭제 대상 폴더가 삭제된 이후에는 비어 있게 되어 rmdir로 삭제할 수 있습니다. 이 과정은 rmdir에 제공된 경로를 따라 반복됩니다.

다음 예시에서 rmdir에 전달되는 명령어는 다음과 같습니다.

rmdir -p work/invoices

요청에 따라 invoices 폴더와 work 폴더 모두 삭제됩니다.

Bash 또는 다른 쉘을 사용하든, 리눅스는 터미널 명령줄에서 직접 폴더와 파일을 삭제할 수 있는 유연하고 강력한 명령어를 제공합니다. 어떤 사람들은 터미널을 중심으로 한 워크플로우를 선호하며, 어떤 사람들은 GUI가 설치되지 않은 서버에서 작업하거나 Raspberry Pi와 같은 헤드리스 시스템의 원격 세션에서 작업해야 할 수도 있습니다. 이 명령어들은 이러한 환경에서 유용하게 사용됩니다.

어떤 종류의 워크플로우를 선호하든, 이러한 명령어들은 쉘 스크립트에 포함하여 일상적인 작업을 자동화하는 데 유용합니다. 예를 들어, 스크립트가 cron 작업에 의해 트리거되면 원치 않는 로그 파일 삭제와 같은 작업을 자동화할 수 있습니다. 이러한 사용 사례를 연구하는 경우, 이러한 명령어의 강력함을 인지하고, 모든 것을 신중하게 테스트하고, 항상 최신 백업을 유지하는 것이 중요합니다.