Linux 시스템에서 디렉터리를 제거하는 방법에는 여러 가지가 있습니다. Gnome's Files 또는 KDE Dolphin과 같은 데스크톱 파일 관리자를 사용하는 경우 관리자의 그래픽 사용자 인터페이스를 사용하여 파일 및 디렉터리를 삭제할 수 있습니다. 그러나 헤드리스 서버에서 작업 중이거나 여러 디렉토리를 한 번에 제거하려면 명령줄에서 디렉토리(폴더)를 삭제하는 것이 가장 좋습니다.
rmdir, rm 및 find 명령을 사용하여 Linux에서 디렉토리를 삭제하는 방법에 대해 설명합니다.
시작하기 전
데스크탑 파일 관리자를 사용하여 디렉토리를 제거할 때 디렉토리는 실제로 휴지통으로 이동되고 쉽게 복구할 수 있습니다.
설명된 명령을 사용하여 디렉토리를 삭제하면 완전히 복구할 수 없으므로 명령줄에서 파일 또는 디렉토리를 제거할 때 각별히 주의하십시오.
대부분의 Linux 파일 시스템에서 디렉토리를 삭제하려면 디렉토리와 해당 내용에 대한 쓰기 권한이 필요합니다. 그렇지 않으면 "작업이 허용되지 않음" 오류가 발생합니다.
공백이 있는 디렉토리 이름은 백슬래시(/)를 사용하여 이스케이프해야 합니다.
rmdir이(가) 있는 디렉토리를 제거
rmdir는 빈 디렉토리를 삭제하기 위한 명령줄 유틸리티입니다. 디렉토리가 비어 있는지 확인할 필요 없이 디렉토리가 비어 있는 경우에만 삭제하려는 경우에 유용합니다.
rmdir가 있는 디렉토리를 삭제하려면 명령과 제거할 디렉토리 이름을 차례로 입력합니다. 예를 들어 dir1 디렉터리를 삭제하려면 다음을 입력합니다.
디렉토리가 비어 있지 않으면 다음 오류가 발생합니다.
rmdir dir1
# rmdir: failed to remove 'dir1': No such file or directory
이 경우 rm 명령을 사용하거나 디렉터리 내용을 수동으로 제거해야 삭제할 수 있습니다.
rm을 사용하여 디렉토리를 제거
rm은 파일 및 디렉토리를 삭제하기 위한 명령줄 유틸리티입니다. rmdir와 달리 rm 명령은 비어 있는 디렉토리와 비어 있지 않은 디렉토리를 모두 삭제할 수 있습니다.
기본적으로 rm 옵션 없이 사용할 경우 디렉터리는 제거되지 않습니다. 빈 디렉토리를 삭제하려면 -d(--dir) 옵션을 사용하고 비어 있지 않은 디렉토리를 삭제하며 모든 내용은 -r(--recursive 또는 -R) 옵션을 사용합니다.
예를 들어, 모든 내용과 함께 dir1이라는 디렉토리를 삭제하려면 다음을 입력합니다.
rm -r dir1
디렉토리 또는 디렉토리 내의 파일이 쓰기 금지되어 있는 경우 삭제를 확인하라는 메시지가 표시됩니다. 메시지를 표시하지 않고 디렉토리를 제거하려면 -f 옵션을 사용합니다.
rm -rf dir1
여러 디렉토리를 한 번에 제거하려면 rm 명령과 함께 공백으로 구분된 디렉토리 이름을 호출합니다. 아래 명령은 나열된 각 디렉토리와 해당 내용을 제거합니다.
rm -r dir1 dir2 dir3
-i 옵션은 rm에게 각 하위 디렉토리와 파일의 삭제를 확인하라는 메시지를 표시합니다. 디렉터리에 파일이 많이 포함되어 있으면 약간 성가실 수 있으므로 삭제를 진행하기 전에 한 번만 표시할 메시지를 -I 옵션을 사용하는 것을 고려해 볼 수 있습니다.
rm -rI dir1
디렉토리를 제거하려면 y를 입력하고 Enter 키를 누릅니다.
rm: remove 1 argument recursively? y
정기적인 확장을 사용하여 여러 디렉터리를 일치시키고 삭제할 수도 있습니다. 예를 들어, _bak으로 끝나는 현재 디렉토리의 첫 번째 수준 디렉토리를 모두 제거하려면 다음 명령을 사용합니다.
rm -r *_bak
디렉터리를 제거할 때 일반 확장을 사용하면 위험할 수 있습니다. rm 명령을 실행하기 전에 삭제할 디렉토리를 볼 수 있도록 먼저 ls 명령과 함께 디렉토리를 나열하는 것이 좋습니다.
찾기를 사용하여 디렉토리를 제거
find는 지정된 식에 따라 파일 및 디렉토리를 검색하고 일치하는 각 파일 또는 디렉토리에 대해 작업을 수행할 수 있는 명령줄 유틸리티입니다.
가장 일반적인 시나리오는 패턴에 따라 find 명령을 사용하여 디렉토리를 삭제하는 것입니다. 예를 들어, 현재 작업 디렉토리에서 _cache로 끝나는 모든 디렉토리를 삭제하려면 다음을 실행합니다.
find . -type d -name '*_cache' -exec rm -r {} +
위의 명령을 분석하겠습니다.
/temp - 현재 작업 디렉토리(.)에서 재귀적으로 검색합니다.
-type d - 검색을 디렉토리로 제한합니다.
-name '*_cache' - _cache로 끝나는 디렉토리만 검색합니다.
-exec - 선택적 인수를 사용하여 외부 명령을 실행합니다(이 경우 rm -r).
{} + - rm 명령 끝에 찾은 파일을 추가합니다.
모든 빈 디렉터리를 제거
디렉토리 트리의 모든 빈 디렉토리를 제거하려면 다음을 실행합니다.
find /dir -type d -empty -delete
다음은 사용된 옵션에 대한 설명입니다.
/temp - /temp 디렉토리에서 재귀적으로 검색합니다.
-type d - 검색을 디렉토리로 제한합니다.
-empty - 빈 디렉터리로만 검색을 제한합니다.
-delete - 하위 트리에서 찾은 모든 빈 디렉토리를 삭제합니다. -delete는 빈 디렉토리만 삭제할 수 있습니다.
-delete 옵션을 매우 주의하여 사용하십시오.
찾기 명령줄이 식으로 평가되며, -delete 옵션을 먼저 추가하면 지정한 시작점 아래의 모든 항목이 삭제됩니다.
-delete 옵션 없이 항상 명령을 먼저 테스트하고 -delete를 마지막 옵션으로 사용합니다.
/bin/rm: Argument list too long
이 오류 메시지는 rm 명령을 사용하여 엄청난 수의 파일이 포함된 디렉터리를 제거할 때 나타납니다. 이 문제는 파일 수가 명령줄 인수의 크기에 대한 시스템 제한보다 크기 때문에 발생합니다.
이 문제에 대한 몇 가지 다른 해결책이 있습니다. 예를 들어 디렉토리에 수동으로 CD를 작성하거나 루프를 사용하여 하위 디렉토리를 하나씩 제거할 수 있습니다.
가장 쉬운 해결책은 먼저 find 명령을 사용하여 디렉토리 내의 모든 파일을 삭제한 후 디렉토리를 삭제하는 것입니다.
find /dir -type f -delete && rm -r /dir
rmandfind를 사용하면 서로 다른 기준에 따라 디렉토리를 빠르고 효율적으로 삭제할 수 있습니다.
디렉터리 삭제는 간단하고 쉬운 프로세스이지만 중요한 데이터를 삭제하지 않도록 주의해야 합니다.
'SW > 리눅스' 카테고리의 다른 글
SSH 터널링 설정 방법, 예제 , 명령어 (포트 포워딩) (0) | 2021.11.23 |
---|---|
Linux : Du 명령어, 예제, 사용 방법 (0) | 2021.11.22 |
Linux : Cp 명령어, 예제, 사용 방법 (파일 복사) (0) | 2021.11.20 |
Linux : Debian 10 : Squid Proxy 설치, 구성 방법, 예제, 명령어 (0) | 2021.11.19 |
Linux : Ps 명령어, 사용 방법, 예제 (프로세스 나열 방볍) (0) | 2021.11.18 |