빈 디렉토리를 모두 삭제하는 방법


11

(Linux 시스템에서)

파일 시스템에 큰 중첩 하위 디렉토리 세트가 있습니다. 파일이 전혀없는 모든 디렉토리 경로를 프룬 (prune)하고 싶습니다.

즉, 해당 디렉토리 또는 해당 디렉토리의 하위 디렉토리에 파일이없는 모든 디렉토리를 반복적으로 삭제하고 싶습니다.

답변:


15

모든 버전의 찾기

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

최신 버전이있는 경우

 find -type d -empty -delete

시원하고 -delete깃발을 몰랐다 .
ansi_lumen

나도 마찬가지야 나는 새로운 것을 배웠다. 빈 디렉토리를 찾기 위해 재귀를 사용하여 스크립트를 작성했습니다. 이것은 그 작업을 크게 단순화시킵니다.
James

2
나중에 -empty 플래그가 실제로 도움이됩니다. -type d를 포함하지 않았거나 방금 사용한 -type f를 포함하지 않은 경우 빈 파일을 찾는 작업도합니다.
Mike

1

최상의 솔루션은 아니지만이 스크립트는 작동합니다.

#!/bin/sh

while true
do
    DIRS=`find . -xdev -type d -exec find {}  -maxdepth 0 -empty  \;`
    if [ -z "$DIRS" ]; then
        exit 0
    else
        echo $DIRS | xargs rmdir
    fi
done

(부분적으로 모든 빈 폴더 나열 에 대한 답변을 기반으로 함 )


1
빈 디렉토리를 제거 할 수있는 권한이 없으면 무한 루프 상태가된다는 생각이
들었습니다.

0
for i in `find -type d -empty`; do rmdir $i; done

닫지 만 시가는 없습니다. 디렉토리를 제거하면 상위 디렉토리가 비어있는 경우가 없습니다.
Simon Richter

사실입니다. 나는 find두 번째 실행에 그들을 것입니다. 이 사건은 실제로는 없었습니다.
ansi_lumen 11
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.