Unix 에서는, 현재의 디렉토리와 그 아래에 있는 모든 것을 어떻게 삭제합니까?
서브디렉토리와 그 아래에 있는 모든 것이 삭제됩니다.
rm -rf <subdir-name>
그러나 어떻게 하면 현재 디렉토리의 모든 것 및 그 아래의 모든 서브디렉토리 및 그 모든 서브디렉토리의 내용을 삭제할 수 있을까요?
안전한 컴퓨팅을 실천합니다.계층에서 한 단계만 올라가면 와일드카드 식을 사용하지 않습니다.
cd ..; rm -rf -- <dir-to-remove>
의 대시는 " " " 입니다.--
rm
그그<dir-to-remove>
는 대시로 시작하는 경우에도 명령줄 옵션이 아닙니다.
현재 파일/디렉토리를 모두 삭제합니다.
find -mindepth 1 -delete
이름을 가진 다른 디렉토리에서 동일한 작업을 수행할 경우 이름을 지정하기만 하면 됩니다.
find <name-of-directory> -mindepth 1 -delete
그 자체를 는, 「 」를 합니다.-mindepth 1
를 사용하지 않고 실행한다.-delete
제거할 항목의 목록을 가져옵니다.
내가 항상 하는 것은 타이핑이다.
rm -rf *
그런 다음 ESC-*를 누르면 bash는 *를 현재 작업 디렉토리에 있는 파일과 디렉토리의 명시적인 목록으로 확장합니다.
이점은 다음과 같습니다.
- ENTER를 누르기 전에 삭제할 파일 목록을 검토할 수 있습니다.
- 명령어 이력에는 와일드카드가 변경되지 않은 "rm -rf *"는 포함되지 않습니다.이 경우 와일드카드는 잘못된 시간에 잘못된 장소에서 잘못 재사용될 수 있습니다.대신 명령어 기록에는 실제 파일 이름이 포함됩니다.
- "잠깐만요"라고 대답하는 것도 편리해졌다.삭제한 파일은 무엇입니까?」파일명은 터미널 스크롤백버퍼 또는 명령어 이력에 표시됩니다.
사실 저는 이것이 너무 좋아서 .bashrc의 다음 행이 있는 Tab의 기본 동작으로 설정했습니다.
bind TAB:insert-completions
사용하다
rm -rf *
★★★★★★★★★★★★★★★★★★★」.
current directory, current directory, current directory, current directory, current directory.에서는 '명시하다'에 대해 것 ..
★★★★★★★★★★★★★★★★★」..
대신 와일드카드글로빙을 사용합니다.하지만 이것은 위험할 수 있다.
보다 안전한 버전의 IMO는 다음과 같습니다.
rm -ri *
(모든 파일/디렉토리를 삭제하기 전에 확인을 요구하는 프롬프트가 표시됩니다).
rm –rf .
는, 서브 디렉토리 및 그 컨텐츠를 포함한, 현재의 모든 것을 직접 삭제합니다.하나의 점(.
).rm -rf ..
두 개의 점(이중점)이래...
)는 앞의 디렉토리를 의미합니다.
즉, 저와 같은 경우 여러 터미널 창을 동시에 열어두면 안전 및 사용을 권장합니다.rm -ir .
그 이유를 이해하기 위해 명령어 인수를 살펴보겠습니다.
먼저 Command man 페이지를 보면 (man rm
대부분의 Unix)에서는,–r
는, 「디렉토리의 내용을 재귀적으로 삭제한다」를 의미합니다.그래서, 하고 있다rm -r .
현재 디렉토리의 모든 것 및 그 아래 모든 것이 삭제됩니다.
인rm –rf .
추가된 -f는 "존재하지 않는 파일 삭제, 프롬프트 없음"을 의미합니다.이 명령어는 현재 디렉토리의 모든 파일 및 디렉토리를 삭제하며 정말로 삭제할지 확인하는 메시지를 표시하지 않습니다. -f
이 명령어를 권한 있는 사용자로 실행하면 디렉토리의 내용을 삭제할 수 있기 때문에 실제로 원하는 내용을 삭제할 수 없기 때문에 특히 위험합니다.
반면에,-i
를 대체하다-f
"제거 전 점검"을 의미합니다.즉, rm이 모든 파일을 삭제하기 전에 "업! 내가 원하는 게 아니야"라고 말할 수 있는 기회를 얻을 수 있습니다.
시스템 관리자 시절에는rm -rf /
전체 권한(루트)으로 로깅되는 동안 시스템 상에 있습니다.그 결과 백업에서 시스템을 복원하는 데 이틀이 걸렸습니다.그래서 내가 지금 고용한 거야rm -ri
지금이다.
그럼 어떻게 해?
rm -rf "$(pwd -P)"/*
rm -rf *
하지 마!위험해!올바른 디렉토리에 있는지 확인하세요!
올바른 디렉토리에 있는지 확인합니다.
rm - filters *
가장 심플하고 안전한 일반적인 솔루션은 다음과 같습니다.
find -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
저는 이 대답이 더 좋다고 생각합니다.
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
최상위 디렉토리가 호출된 경우
images
를 실행하고 나서 실행하다rm -r images/*
이것은 셸글로브 연산자를 사용합니다.*
달리다rm -r
이미지 내의 모든 파일 또는 디렉토리에서 사용할 수 있습니다.
기본적으로 한 단계 올라가면 X 디렉토리 내의 모든 것을 삭제합니다.이렇게 하면 원래 폴더를 유지하면서 내용을 삭제할 폴더를 지정할 수 있습니다. 이 폴더는 '여기서 모두 삭제'라고 말하는 것보다 더 안전합니다(이 폴더는 허용되지 않거나 폴더의 기존 권한을 수정하지 않을 수도 있습니다).
언급URL : https://stackoverflow.com/questions/820760/in-unix-how-do-you-remove-everything-in-the-current-directory-and-below-it
'programing' 카테고리의 다른 글
프로세스를 정상적으로 종료하려면 어떤 순서로 신호를 보내야 합니까? (0) | 2023.04.11 |
---|---|
Excel 데이터를 Firebase에 저장하려면 어떻게 해야 하나요? (0) | 2023.04.11 |
xy 산점도에서 열 값에 따라 점을 색칠하려면 어떻게 해야 합니까? (0) | 2023.04.11 |
Bash의 단일 대괄호와 이중 대괄호의 차이 (0) | 2023.04.11 |
트리거와 DataTrigger의 차이점은 무엇입니까? (0) | 2023.04.11 |