유닉스에서,당신은 어떻게 모든 것을 제거에는 현재 디렉토리와 하위디렉토리 아래에 그것은?

StackOverflow https://stackoverflow.com/questions/820760

문제

이 삭제됩니다 모든 하위디렉토리에 아래 그것:

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 에서이 줄을 사용하여 탭의 기본 동작을 만들었습니다.

bind TAB:insert-completions

사용

rm -rf *

업데이트 : . 현재 디렉토리를 나타내지 만 사용할 수는 없습니다. 명령에는 명시적인 확인이있는 것 같습니다 . 그리고 ... 대신 와일드 카드 글로브를 사용하십시오. 그러나 이것은 위험 할 수 있습니다.

더 안전한 버전 IMO는 다음과 같습니다.

rm -ri * 

(이것은 모든 파일/디렉토리를 삭제하기 전에 확인을 위해 귀하에게 유사합니다.)

맞습니다 rm –rf . 하위 디렉토리 및 해당 내용을 포함하여 현재의 모든 것을 직접 제거합니다. 그만큼 단일 도트 (.)는 현재 디렉토리를 의미합니다. 하지 않도록 조심하십시오 rm -rf .. 이후 이중 도트 (..)는 이전 디렉토리를 의미합니다.

이것은 당신이 나와 같고 동시에 여러 개의 터미널 창을 열면 안전하고 사용하는 것이 좋습니다. rm -ir . 이유를 이해하기 위해 명령 인수를 살펴 보겠습니다.

먼저, 당신이 보면 rm 명령 맨 페이지 (man rm 대부분의 unix에서) 당신은 그것을 알 수 있습니다 –r "디렉토리의 내용을 재귀 적으로 제거"하는 것을 의미합니다. 그래서 rm -r . 혼자서는 현재 디렉토리의 모든 것을 삭제하고 모든 것이 벨로 표시됩니다.

~ 안에 rm –rf . 추가 된 -f는 "존재하지 않는 파일을 무시하고 프롬프트하지 않음"을 의미합니다. 이 명령은 현재 디렉토리의 모든 파일과 디렉토리를 삭제하며 실제로 그렇게하고 싶다는 것을 확인하지 마십시오. -f 권한에 따라 명령을 실행하는 경우 특히 위험합니다. 왜냐하면 그것이 실제로 원하는 것인지 확인하지 않고 디렉토리의 컨텐츠를 삭제할 수 있기 때문입니다.

반면에 rm -ri . 그만큼 -i 그것은 그것을 대체합니다 -f "제거 전에 프롬프트"를 의미합니다. 즉, RM이 모든 파일을 행복하게 삭제하기 전에 "OUPS! 내가 원하는 것이 아닙니다"라고 말할 기회가 있습니다.

내 이른 sysadmin 시절에 나는 rm -rf / 완전한 권한 (루트)으로 기록 된 시스템에서. 결과는 2 일 동안 백업에서 시스템 복원을 통과했습니다. 그것이 내가 지금 고용하는 이유입니다 rm -ri 지금.

어때요 :

rm -rf "$(pwd -P)"/* 
rm  -rf * 

하지 마세요! 이건 위험 해! 올바른 디렉토리에 있는지 확인하십시오!

만들다 확실한 당신은 올바른 디렉토리에 있습니다

rm -rf *

이 가장 간단한 안전 및 일반 솔루션은 아마도 다음과 같습니다.

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/*.이 사용하는 쉘 glob 자 * 실행 rm -r 에 모든 파일이나 디렉토리 안에 이미지입니다.

기본적으로 당신이 가고,그 말을 삭제 내부의 모든 것 X 디렉토리에 있습니다.이 방법 당신은 아직도 무엇을 지정하는 폴더가 있어야 합 콘텐츠는 삭제되는 보다 안전 그냥'말의 모든 항목을 삭제하고"여기에서,유지하면서 원본 폴더에(있는 때때로 당신은 당신하고 싶지 않기 때문에 허용하거나지 않아 수정을 원하는 폴더의 기존의 권한)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top