bash에서 디렉토리를 삭제하지 않고 디렉토리의 모든 파일과 하위 디렉토리를 제거하는 방법은 무엇입니까? 파일과 하위 디렉토리를 제거하는 명령이 있습니까? 예를 들어

디렉토리를 삭제하지 않고 디렉토리의 모든 파일과 하위 디렉토리를 제거하는 명령이 있습니까?

예를 들어 하위 디렉토리가 “1”, “2”, “3”인 “dontDeleteMe”디렉토리가 있고 각 하위 디렉토리에 사진이 몇 개있는 경우 하위 디렉토리 “1”, “2”및 “3”을 제거하는 방법 부모 디렉토리 “dontDeleteMe”를 제거하지 않고 그 안에있는 모든 파일?



답변

모든 것을 제거하려면 에서 디렉토리를 제거하지 않고 디렉토리를 입력 :

rm -rfv dontDeleteMe/*

/*부분은 매우 중요합니다. 앞에 공백을 넣으면 *현재 디렉토리의 모든 파일이 삭제됩니다.

또한, 매우 노는 조심 rm, -r*같은 명령의 모든. 그들은 비참한 조합이 될 수 있습니다.

업데이트 : 좋아, 숨겨진 점 파일 (처음에 점이있는 파일 이름, 예 .hidden)이 있으면 파일이 그대로 유지됩니다.

따라서 원래 질문에 대한 가장 간단한 해결책 은 다음과 같습니다.
rm -rfv dontDeleteMe && mkdir dontDeleteMe

또 다른 방법은 find-exec옵션이나 파이프를 사용하는 것입니다 xargs(아래).

find dontDeleteMe/* -print0 | xargs -0 rm -rv


답변

rm -r ./*항상 작동하지 않는 유일한 이유 는에 일치하지 않는 숨겨진 파일 및 / 또는 폴더를 가질 수 있기 때문 *입니다.

이를 bash위해 *숨겨진 개체까지 모든 항목을 일치 시키는 옵션을 제공하십시오 .

cd dont-delete-me
shopt -s dotglob
rm -r ./*

dotglob위 명령을 실행 한 쉘을 계속 사용하는 경우 기본 (설정되지 않은) 상태 로 재설정 하는 것이 유용 할 수 있습니다 .

shopt -u dotglob 

답변

열린 터미널 ( Ctrl+ Alt+ T) 개미 유형은 다음과 같습니다.

find somedir -mindepth 1 -delete

이것은 모든 파일과 디렉토리 내에서 일치 somedir하고 (손자) 어린이 “숨겨진”점 파일을 포함하지만 제외 somedir있기 때문에 그 자체를 -mindepth 1한 후, -delete그들을.


답변

find /dontDeleteMe/ -xdev -depth -mindepth 1 -exec rm -Rf {} \;

xdev장치 경계 내에서만 파일을 삭제 하려면 옵션을 사용하십시오 .


답변

“dontdelete”라는 기본 디렉토리를 제외한 모든 파일과 하위 디렉토리를 삭제하려면 (터미널에서) :

rm -rf dontdelete/*

답변

플래그 find와 함께 사용할 수 있습니다 -delete.

find dontDeleteMe/* -delete

/*이 이야기로 중요하다 find“dontDeleteMe”라는 폴더 안에 만 검색 할 수 있습니다.

또한 -delete플래그가 find명령 의 끝에 있는지 확인 하십시오 .


답변

rm -rf  directory/{.*,/*}

뭐라고 :

로 시작하는 모든 파일을 제거하십시오. “디렉토리”및 다른 모든 파일에도.

Neftas가 친절하게 언급했지만 이 솔루션 은 안전하지 않습니다!

보다 안전한 솔루션은 다음과 같습니다.

 rm -rf directory/!(.|..)