Bash
計算目錄列表中的目錄數
我有大量目錄,我想用 bash 命令計算每個目錄中的目錄數量。我很難管道
ls
並wc
實現我想要的。例如,如果我有以下文件夾結構(其中葉文件夾可能包含更多子文件夾):
. ├── 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' ::: */