development

유닉스에서 현재 디렉토리와 그 아래의 모든 것을 어떻게 제거합니까?

big-blog 2020. 8. 7. 07:35
반응형

유닉스에서 현재 디렉토리와 그 아래의 모든 것을 어떻게 제거합니까?


나는 이것이 하위 디렉토리와 그 아래의 모든 것을 삭제한다는 것을 알고 있습니다.

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- *을 공격 하고, 배쉬는 현재 작업 디렉토리에있는 파일 및 디렉토리의 명시 적 목록에 *을 확장됩니다.

이점은 다음과 같습니다.

  • ENTER를 누르기 전에 삭제할 파일 목록을 검토 할 수 있습니다.
  • 명령 기록에는 와일드 카드가 그대로있는 "rm -rf *"가 포함되지 않습니다. 그러면 잘못된 시간에 잘못된 위치에서 실수로 재사용 될 수 있습니다. 대신 명령 내역에는 실제 파일 이름이 있습니다.
  • 또한 "잠시만 기다려주십시오 ... 내가 방금 삭제 한 파일은 무엇입니까?"라고 대답하는 것이 한두 번 편리해졌습니다. 파일 이름은 터미널 스크롤 백 버퍼 또는 명령 기록에 표시됩니다.

사실, 나는 이것을 너무 좋아해서 .bashrc에서 다음 줄을 사용하여 TAB의 기본 동작으로 만들었습니다.

bind TAB:insert-completions

사용하다

rm -rf *

업데이트 : .현재 디렉터리를 의미하지만 사용할 수 없습니다. 명령에 .및에 대한 명시적인 검사가있는 것 같습니다 ... 대신 와일드 카드 글 로빙을 사용하십시오. 그러나 이것은 위험 할 수 있습니다.

더 안전한 버전 IMO는 다음을 사용하는 것입니다.

rm -ri * 

(모든 파일 / 디렉토리를 삭제하기 전에 확인하라는 메시지가 표시됩니다.)


rm –rf .모든 하위 디렉토리와 그 내용을 포함하여 현재의 모든 것을 직접 제거하는 것이 정확합니다 . 하나의 점 ( .) 현재 디렉토리를 의미합니다. 이중 점 ( )은 이전 디렉토리를 의미 rm -rf ..하므로 하지 않도록주의 하십시오...

즉, 나와 같고 동시에 여러 개의 터미널 창이 열려있는 경우 안전하고 rm -ir .Lets look at the command arguments를 사용하여 이유를 이해하는 것이 좋습니다.

첫째, rm명령 매뉴얼 페이지 ( man rm대부분의 Unix에서)를 보면 –r"디렉토리 내용을 재귀 적으로 제거" 한다는 의미입니다. 따라서 rm -r .혼자 수행 하면 현재 디렉토리의 모든 항목과 그 아래의 모든 항목이 삭제됩니다.

에서 rm –rf .추가 -f 수단 "결코 프롬프트, 존재하지 않는 파일을 무시". 이 명령은 현재 디렉터리에있는 모든 파일과 디렉터리를 삭제하고 실제로 수행 할 것인지 확인하는 메시지를 표시하지 않습니다. -f권한 사용자로 명령을 실행하는 경우 특히 위험합니다. 실제로 원하는 내용인지 확인하지 않고 디렉토리의 내용을 삭제할 수 있기 때문입니다.

otherhand에,에 그 대신 "어떤 제거하기 전에 프롬프트"의미. 즉, rm이 모든 파일을 행복하게 삭제하기 전에 "oups! 그건 내가 원하는 것이 아닙니다"라고 말할 기회를 얻게됩니다.rm -ri .-i-f

초기 시스템 관리자 시절 rm -rf /에는 전체 권한 (루트)으로 로그인하는 동안 시스템에서 작업을 수행했습니다. 그 결과 백업에서 시스템을 복원하는 데 이틀이 지났습니다. 그래서 지금 고용하고 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이미지 내의 모든 파일 또는 디렉토리에서 실행 됩니다.

basically you go up one level, and then say delete everything inside X directory. This way you are still specifying what folder should have its content deleted, which is safer than just saying 'delete everything here", while preserving the original folder, (which sometimes you want to because you aren't allowed or just don't want to modify the folder's existing permissions)

참고URL : https://stackoverflow.com/questions/820760/in-unix-how-do-you-remove-everything-in-the-current-directory-and-below-it

반응형