상위 폴더를 삭제하지 않고 하위 폴더 삭제


15

이 유형의 디렉토리 구조의 경우 :

/config/filegroups/filegroupA/files/fileA1.txt
/config/filegroups/filegroupA/files/fileA2.txt
/config/filegroups/filegroupB/files/fileB1.txt
/config/filegroups/filegroupB/files/fileB2.txt
...

rm -rf /config/filesgroups부모 폴더와 모든 하위 폴더를 삭제 하는 데 사용할 수 있다는 것을 알고 있습니다 ...

하지만 난 단지 삭제하려면 /filegroupA, /filegroupB등, 그리고 삭제하지/config/filegroups


13
rm -rf / config / filesgroups / *를 사용하는 데 문제가 있습니까?
dsmsk80

3
아니면 어쩌면 rm -rf /config/filegroups/filegroups{A,B}?
Drav Sloan

@dsumsky 기본적 bash으로 '.'는 포함되지 않습니다. 경로 이름 확장의 폴더. 어느 것이 바람직하거나 바람직하지 않을 수 있습니다. 나 자신 나는 할 shopt -s dotglob.bashrc그 수정합니다. 누군가가 유용하다고 생각할 수도 있습니다.).
Miroslav Koškár

이 작업이 당신에게 도움이 되었습니까? 그렇다면 같은 일을하고 싶은 다른 사람들을 돕기 위해 답을 받아 주시겠습니까?
Mawg는 모니카가 9

rm -rf /*할 것이다;) --- 심각하게 그것을하지 않는다
Muhammad Umer

답변:


28
rm -rf /config/filegroups/*

디렉토리 만 삭제하고 디렉토리에 대한 심볼릭 링크를 삭제하고 파일을 /config/filegroups그대로 두려면 후행 슬래시를 사용할 수 있습니다.

rm -rf /config/filegroups/*/

.상당히 최근의 bash가 있다고 가정 하고 이름이 a 로 시작하는 디렉토리를 삭제하려면 dotglob 쉘 옵션을 사용해야합니다.

shopt -s dotglob
rm -rf /config/filegroups/*/
shopt -u dotglob

rm -rf "/ config / filegroups / *"에서는 작동하지 않습니다.
Ilya Yevlampiev

5

/config/filegroups"숨겨진"파일 및 디렉토리 (로 시작하는 이름 .)를 포함하여 모든 파일 및 디렉토리가 삭제됩니다 .

find /config/filegroups -mindepth 1 -maxdepth 1 | xargs rm -rf

파일 또는 디렉토리 이름에 공백이 있으면 다음과 같이해야합니다.

find /config/filegroups -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf

보너스 : 먼저 다음과 같이 삭제할 내용을 확인할 수 있습니다.

find /config/filegroups -mindepth 1 -maxdepth 1

특정 파일이나 디렉토리를 유지하려면 다음과 같이하십시오.

find /config/filegroups -mindepth 1 -maxdepth 1 -not -name "keep"

find-delete옵션 을 사용하지 않는 이유가 있습니까?
evilsoup

4
-delete비어 있지 않은 디렉토리를 삭제하지 않습니다. 비어 있지 않은 디렉토리를 삭제 하는 데 필요한 -maxdepthoverrides . 없이 쉽게 볼 수있는 디렉토리는 또한 디렉토리 내 파일을 나열하기 때문에 삭제 될 것입니다. 사용 하지 않으면 같은 필터를 쉽게 사용할 수 없습니다 . 또한 내부의 모든 객체를 먼저 삭제하여 디렉토리를 삭제합니다. 크고 깊은 트리 인 경우 시간이 오래 걸릴 수 있습니다. -depth-delete-maxdepth-maxdepth-name-delete
lesmana

4

findwith를 사용 하는 -exec것이 좋습니다. 이렇게하면 전화가 다음과 같이됩니다.

find /config/filegroups/ -maxdepth 1 -mindepth 1 -type d -exec rm -rf {} \;

-2

이미 폴더에 있다면 입력하면됩니다. rm -rf ./**

그래서:

cd /config/filesgroups
rm -rf ./**

로컬 경로에서 모든 하위 폴더를 삭제하는 glob 패턴입니다.

./로컬 폴더와 ... **아래의 모든 폴더를 참조하십시오 .


1
어떤 폴더와 왜`**``
RalfFriedl

1
명령에서 rm -rf ./*사용하지 않는 경우 "해당 파일 또는 디렉토리 없음"에 대한 진단 메시지가 표시 될 수 있다는 점을 제외하고는 정확히 동일 -f합니다 (내용이 처리되기 전에 최상위 디렉토리가 재귀 적으로 삭제되므로). 에 의해 rm).
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.