디렉토리 목록의 디렉토리 수 계산

디렉토리 목록의 디렉토리 수 계산

나는 많은 수의 디렉토리를 가지고 있으며 bash 명령을 사용하여 각 디렉토리의 디렉토리 수를 계산하고 싶습니다. 나는 내가 원하는 것을 ls이루는데 어려움을 겪는다 .wc

예를 들어, 다음과 같은 폴더 구조가 있는 경우(리프 폴더에 더 많은 하위 폴더가 포함될 수 있음):

.
├── folder1
│   └── subfoldera
├── folder2
│   ├── subfoldera
│   └── subfolderb
├── folder3
│   ├── subfoldera
│   ├── subfolderb
│   └── subfolderc
└── folder4
    ├── subfoldera
    ├── subfolderb
    └── subfolderc

그럼 난 카운트를 갖고 싶어

1
2
3
3

등.

답변1

Bash 및 배열 사용:

dirs=(*/)                      # get all directories with globbing
                               # in current directory

for d in "${dirs[@]}"; do
  sub=("$d"*/)                 # get all subdirs in $d
  echo "${#sub[@]}"            # print number of array elements/subdirs
done

산출:

1
2

한 줄로:

dirs=(*/); for d in "${dirs[@]}"; do sub=("$d"*/); echo "${#sub[@]}"; done

답변2

디렉토리 이름에 '\n'이 포함되어 있지 않으면 이 방법이 작동합니다.

parallel 'ls -d {}/*/ | wc -l' ::: */

출력에 디렉터리를 포함하려면 다음을 수행하세요.

parallel --tag 'ls -d {}/*/ | wc -l' ::: */

관련 정보