ディレクトリのフォルダ数(再帰的)

ディレクトリのフォルダ数(再帰的)

CWD /が指定された現在のディレクトリのフォルダ数を印刷したい(再帰的に隠されたフォルダを除く)。この情報を確認するためにどのようなコマンドまたは一連のコマンドを使用できますか?

答え1

現在の作業ディレクトリに隠されていないディレクトリの数を探します。

ls -l | grep "^d" | wc -l

編集する:

再帰的に作成するには、-R次のオプションを使用しますls -l

ls -lR | grep "^d" | wc -l

答え2

GNUゾーンでは:

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

他の場所で

find . -type d ! -name . -printf . -prune | wc -c

バッシュから:

shopt -s dotglob
count=0
for dir in *; do
  test -d "$dir" || continue
  test . = "$dir" && continue
  test .. = "$dir" && continue
  ((count++))
done
echo $count

答え3

echo $(($(find -type d | wc -l) - 1))一方向です(現在のディレクトリを削除するには、wc -lから1を減算します)。オプションを調整できます探す行って他のものを見つけてください。

echo $(($(find -type d -not -path '*/\.*' | wc -l) - 1))- 除外隠しディレクトリ

コメントで述べたように、この表現の中心は実際にfind -type dすべてのディレクトリを見つけることです。

これにより、すべてのサブフォルダも検索できます。-maxdepthフラグを使用して深さを制御できます。

答え4

存在するzsh

(){echo $#} *(N/)

再帰的に:

(){echo $#} **/*(N/)

D隠しディレクトリの数を計算するには、glob修飾子を追加します。

POSIXに対応:

ls -p | grep -c /

(隠しオプションを追加-Als

再帰的に:

LC_ALL=C find .//. ! -name . \( -name '.*' -prune -o -type d -print \) |
  grep -c //

または

LC_ALL=C ls -Rqn . | grep -c '^d'

隠された内容:

LC_ALL=C find .//. ! -name . -type d | grep -c //

または:

LC_ALL=C ls -ARqn . | grep -c '^d'

関連情報