UNIX 디렉토리의 하위 디렉토리 수를 계산하는 방법은 무엇입니까?

UNIX 디렉토리의 하위 디렉토리 수를 계산하는 방법은 무엇입니까?

주어진 디렉토리에 있는 디렉토리의 총 개수를 계산해야 합니다(하위 디렉토리라는 점에 유의하세요).

파일 수를 계산하는 방법을 알고 있지만 스크립트의 디렉터리 수를 계산하는 데 문제가 있습니다.

답변1

@rahul의 의견을 약간 더 강력하게 변형한 것입니다.

find . -type d -mindepth 1 -printf '1'  | wc -c

현재 디렉토리를 제외하고 현재 디렉토리의 모든 디렉토리에 대해 "1"( )을 인쇄한 -mindepth 1다음 1을 계산합니다. 이는 개행 문자가 포함된 디렉토리 이름을 처리합니다.

답변2

/와일드카드 패턴 끝에 를 넣으면 패턴은 디렉터리 및 디렉터리에 대한 기호 링크만 일치합니다. 따라서 다음 코드 조각은 현재 디렉토리의 디렉토리와 심볼릭 링크를 계산합니다.

set -- */ .*/
if ! [ -e "$1" ]; then shift; fi # handle the case when */ matches nothing
echo $(($# - 2)) # -2 for . and ..

Bash에서는 이것을 다음과 같이 단순화할 수 있습니다.

shopt -s dotglob nullglob
dirs=(*/)
echo ${#dirs[@]}

디렉토리를 포함하지 않으려면 를 사용하십시오 find. 디렉토리 이름에 개행 문자가 없으면 행 수를 계산할 수 있습니다.

find . -name . -o -type d -print -prune | wc -l

완전히 견고하게 하려면 대신 슬래시를 계산하십시오.

find . -name . -o -type d -print -prune | tr -dc / | wc -c

답변3

현재 디렉터리에서만 디렉터리 수를 계산합니다.

find . -mindepth 1 -maxdepth 1 -type d | wc -l

현재 디렉터리와 여기에 포함된 모든 하위 디렉터리의 디렉터리 수를 계산합니다.

find . -mindepth 1 -type d | wc -l

관련 정보