programing

Unix 에서는, 현재의 디렉토리와 그 아래에 있는 모든 것을 어떻게 삭제합니까?

muds 2023. 4. 11. 22:40
반응형

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

반응형