빈 디렉토리 트리 삭제(파일을 삭제하지 않고 가능한 한 많은 디렉토리를 삭제)

빈 디렉토리 트리 삭제(파일을 삭제하지 않고 가능한 한 많은 디렉토리를 삭제)

다음과 같은 디렉터리 트리가 있다고 가정해 보겠습니다.

ROOTDIR
    └--SUBDIR1
        └----SUBDIR2
            └----SUBDIR3

입력할 때 다음과 같은 명령을 찾고 있습니다.

$ [unknown command] ROOTDIR

전체 디렉토리 트리를 삭제할 수 있습니다.전체 트리에 파일이 없고 디렉토리만 있는 경우. 그러나 SUBDIR1 아래에 hello.pdf라는 파일이 있다고 가정합니다.

ROOTDIR
    └--SUBDIR1
        └--hello.pdf
        └----SUBDIR2
            └----SUBDIR3

그런 다음 명령은 SUBDIR2 이하만 삭제해야 합니다.

답변1

find ROOTDIR -type d -empty -delete

그것은 같은

find ROOTDIR -type d -depth -empty -exec rmdir "{}" \;

하지만 내장된 "-delete" 작업을 사용하세요.

"-삭제"는 "-깊이"를 의미합니다.

답변2

알렉시스는 가까웠다. 당신이 해야 할 일은 다음과 같습니다:

find . -type d -depth -empty -exec rmdir "{}" \;

먼저 첫 번째 빈 디렉터리를 찾을 때까지 디렉터리 트리를 드릴다운한 다음 삭제합니다. 따라서 상위 디렉토리를 비운 다음 삭제하는 등의 작업을 수행합니다. 이렇게 하면 원하는 효과가 나올 것입니다. (아마 일주일에 10번 정도 이 작업을 수행하므로 이것이 맞다고 확신합니다.) :-)

답변3

나는 이것을 시도할 것이다:

find ROOTDIR -type d -depth -exec rmdir {} \;

답변4

rmdir $(find ROOTDIR -type d | sort -r)

관련 정보