비어 있는 디렉토리와 비어 있지 않은 디렉토리의 수를 세고 싶습니다. 그러나 파일과 하위 디렉터리를 포함하는 모든 빈 디렉터리와 디렉터리의 크기는 4096으로 동일합니다. 따라서 4096 크기로 인해 빈 디렉터리도 비어 있지 않은 디렉터리에 포함됩니다. 그리고 빈 디렉터리의 개수는 0입니다.
답변1
당신이 관심을 갖는 것이 공허함뿐이라면 이것이 find
가장 간단한 도구인 것 같습니다.
find . -type d -empty
현재 디렉터리의 모든 빈 폴더가 나열됩니다. 다른 곳에서 검색하려면 포인트를 변경하세요.
find . -maxdepth 1 -type d -empty
하위 디렉터리 보기가 방지됩니다.
최종 목표는 개수를 계산하는 것이므로 @alecxs 댓글을 기반으로 합니다
find . -maxdepth 1 -type d -empty -printf '\n' | wc -l
. 이는 각 디렉터리에 대해 프로세스를 분기하지 않는다는 장점이 있으므로 특히 빈 디렉터리 수가 많은 경우 속도가 더 빨라집니다.
답변2
나는 보통 bash의 폴더 크기 별칭을 (/root/).bashrc에 넣습니다.
alias ds='du --max-depth=1 -ch'
그래서 매번 완전한 내용을 입력하지 않겠습니다. 이렇게 하면 폴더 크기가 사람이 읽을 수 있는 형식(예: 4K, 1M, 2G)으로 나열되므로
다음과 같이 이 명령을 실행하고 grep을 통해 파이프할 수 있습니다.
ds |grep -c 4.0K
이것은 빈 디렉토리를 계산하거나 다음을 수행합니다.
ds |grep -cv 4.0K
비어 있지 않은 디렉토리를 계산합니다
별칭을 사용하지 않으려면 다음 ds
으로 바꾸세요 du --max-depth=1 -ch
. 완전히 정확하려면 h
다음을 건너뛰고 다음을 수행하세요.
du --max-depth=1 -cb |grep -c "^4096"$'\t'
디렉토리 크기가 4096B인 경우에도 이 내용이 표시됩니다.심볼릭 링크내부 또는 파일0B 사이즈, 그래서 이것은아니요빈 디렉토리 수를 올바르게 표시하므로 위의 솔루션을 find와 함께 사용하는 것이 더 나을 수 있습니다.
내가 일반적으로 사용하는 또 다른 유용한 방법은 큰 디렉터리(1G보다 큰 디렉터리)를 나열하고 정렬하는 것입니다.
ds |grep "G"$'\t' |sort -n
도움이 될 것입니다.