私は多数のディレクトリを持っており、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' ::: */