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

rm 및 rmdir 명령은 Linux, macOS 및 기타 Unix 계열 운영 체제에서 파일과 디렉터리를 삭제합니다. Windows 및 DOS의 del 및 deltree 명령과 유사합니다. 이러한 명령은 매우 강력하며 몇 가지 옵션이 있습니다.

rm 및 rmdir을 사용하여 삭제된 파일 및 디렉토리는 휴지통으로 이동되지 않습니다. 컴퓨터에서 즉시 제거됩니다. 이 명령을 사용하여 실수로 파일을 삭제한 경우 파일을 복원할 수 있는 유일한 방법은 백업을 통해서입니다.

rm으로 파일을 제거하는 방법

가장 간단한 경우는 현재 디렉토리에서 단일 파일을 삭제하는 것입니다. rm 명령, 공백을 입력한 다음 삭제할 파일 이름을 입력합니다.

rm file_1.txt

파일이 현재 작업 디렉토리에 없으면 파일 위치에 대한 경로를 제공하십시오.

rm ./path/to/the/file/file_1.txt

하나 이상의 파일 이름을 rm에 전달할 수 있습니다. 이렇게 하면 지정된 모든 파일이 삭제됩니다.

rm file_2.txt file_3.txt

와일드카드를 사용하여 삭제할 파일 그룹을 선택할 수 있습니다. *는 여러 문자를 나타내고 ? 단일 문자를 나타냅니다. 이 명령은 현재 작업 디렉토리에 있는 모든 png 이미지 파일을 삭제합니다.

rm *.png

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

rm *.?

파일이 쓰기 금지되어 있으면 파일을 삭제하기 전에 메시지가 표시됩니다. y 또는 n으로 응답하고 “Enter”를 눌러야 합니다.

rm을 와일드카드와 함께 사용할 위험을 줄이려면 -i(대화식) 옵션을 사용하십시오. 이를 위해서는 각 파일의 삭제를 확인해야 합니다.

rm -i *.dat

-f(강제) 옵션은 대화형의 반대입니다. 파일이 쓰기 방지된 경우에도 확인 메시지가 표시되지 않습니다.

rm -f filename

rm으로 디렉토리를 제거하는 방법

빈 디렉토리를 제거하려면 -d(디렉토리) 옵션을 사용하십시오. 파일 이름과 마찬가지로 디렉토리 이름에 와일드카드(* 및 ?)를 사용할 수 있습니다.

rm -d directory

둘 이상의 디렉토리 이름을 제공하면 지정된 빈 디렉토리가 모두 삭제됩니다.

rm -d directory1 directory2 /path/to/directory3

비어 있지 않은 디렉토리를 삭제하려면 -r(재귀) 옵션을 사용하십시오. 분명히 하자면, 이것은 디렉토리와 그 안에 포함된 모든 파일 및 하위 디렉토리를 제거합니다.

rm -r directory1 directory2 directory3

디렉토리나 파일이 쓰기 금지되어 있으면 삭제를 확인하는 메시지가 표시됩니다. 비어 있지 않은 디렉토리를 삭제하고 이러한 프롬프트를 표시하지 않으려면 -r(재귀) 및 -f(강제) 옵션을 함께 사용하십시오.

rm -rf directory

여기서 주의가 필요합니다. rm -rf 명령을 잘못 사용하면 데이터가 손실되거나 시스템 오작동이 발생할 수 있습니다. 위험하며 주의가 최선의 정책입니다. rm -rf 명령에 의해 삭제될 파일과 디렉토리 구조를 이해하려면 tree 명령을 사용하십시오.

Ubuntu 또는 다른 Debian 기반 배포를 사용하는 경우 apt-get을 사용하여 이 패키지를 시스템에 설치합니다. 다른 Linux 배포판에서는 Linux 배포판의 패키지 관리 도구를 대신 사용하십시오.

sudo apt-get install tree

tree 명령을 실행하면 이 명령이 실행되는 디렉토리 아래에 있는 디렉토리 구조 및 파일에 대한 이해하기 쉬운 다이어그램이 생성됩니다.

tree

또한 tree 명령의 경로를 제공하여 파일 시스템의 다른 디렉토리에서 트리를 시작하도록 할 수 있습니다.

tree path/to/directory

rm 명령에는 –one-file-system, –no-preserve-root, –preserve-root 옵션도 있지만 고급 사용자에게만 권장됩니다. 문제가 발생하면 실수로 모든 시스템 파일을 삭제할 수 있습니다. 명령을 참조하십시오 매뉴얼 페이지 자세한 내용은.

rmdir로 디렉토리를 제거하는 방법

디렉토리를 삭제하는 데 사용할 수 있는 rmdir이라는 또 다른 명령이 있습니다. rm과 rmdir의 차이점은 rmdir은 비어 있는 디렉토리만 삭제할 수 있다는 것입니다. 파일을 삭제하지 않습니다.

가장 간단한 경우는 하나의 빈 디렉토리를 삭제하는 것입니다. rm과 마찬가지로 여러 디렉토리 이름을 rmdir 또는 디렉토리 경로에 전달할 수 있습니다.

rmdir에 이름을 전달하여 현재 디렉토리에서 단일 디렉토리를 삭제합니다.

rmdir directory

rmdir에 이름 목록을 전달하여 여러 디렉토리를 삭제합니다.

rmdir directory1 directory2 directory3

해당 디렉토리의 전체 경로를 지정하여 현재 디렉토리에 없는 디렉토리를 삭제합니다.

rmdir /path/to/directory

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

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

다음 예제에서 두 개의 폴더가 rmdir로 전달되었습니다. 이 폴더는 work/reports 및 work/quotes 입니다. –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

요청에 따라 송장과 작업 디렉토리가 모두 삭제됩니다.

Bash를 사용하든 다른 쉘을 사용하든 Linux는 터미널 명령줄에서 직접 디렉토리와 파일을 삭제할 수 있는 유연하고 강력한 명령을 제공합니다. 어떤 사람들은 터미널을 중심으로 하는 워크플로를 선호합니다. 다른 사람들은 그 문제에서 선택의 여지가 없을 수 있습니다. GUI가 설치되지 않은 서버에서 작업하거나 Raspberry Pi와 같은 헤드리스 시스템의 원격 세션에서 작업할 수 있습니다. 이 명령은 해당 그룹의 사람들에게 적합합니다.

그러나 어떤 유형의 워크플로를 선호하든 이러한 명령은 쉘 스크립트에 포함되기에 매우 적합합니다. 스크립트가 cron 작업에 의해 트리거되면 원치 않는 로그 파일 제거와 같은 일상적인 하우스키핑 작업을 자동화하는 데 도움이 될 수 있습니다. 해당 사용 사례를 조사하는 경우 이러한 명령의 힘을 기억하고 모든 것을 신중하게 테스트하고 항상 최신 백업을 유지하십시오.