크기가 4096인 비어 있지 않은 디렉토리와 비어 있는 디렉토리를 계산하는 방법

크기가 4096인 비어 있지 않은 디렉토리와 비어 있는 디렉토리를 계산하는 방법

비어 있는 디렉토리와 비어 있지 않은 디렉토리의 수를 세고 싶습니다. 그러나 파일과 하위 디렉터리를 포함하는 모든 빈 디렉터리와 디렉터리의 크기는 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

도움이 될 것입니다.

관련 정보