Bash

計算目錄列表中的目錄數

  • August 17, 2020

我有大量目錄,我想用 bash 命令計算每個目錄中的目錄數量。我很難管道lswc實現我想要的。

例如,如果我有以下文件夾結構(其中葉文件夾可能包含更多子文件夾):

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

然後我希望有計數

1
2
3
3

等等。

使用 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
3
3

一行:

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

如果目錄的名稱不包含 ‘\n’ 這應該有效:

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

如果要在輸出中包含目錄:

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

引用自:https://unix.stackexchange.com/questions/604989