特定のCWD /現在のディレクトリにあるフォルダーの数(再帰的、隠しフォルダーを除く)を印刷したいと思います。この情報を確認するために、どのコマンドまたは一連のコマンドを使用できますか?
これにより、現在の作業ディレクトリにある非表示ではないディレクトリの数がわかります。
ls -l | grep "^d" | wc -l
編集:
これを再帰的にするには、-R
オプションls -l
:
ls -lR | grep "^d" | wc -l
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
echo $(($(find -type d | wc -l) - 1))
は一方向です(wc -lから1を引いて、現在のディレクトリを削除します)。オプションを find に微調整して、さまざまなものを見つけることができます。
echo $(($(find -type d -not -path '*/\.*' | wc -l) - 1))
- hidden dirs を除外します==
コメントで述べたように、この式の中心は実際にはすべてのディレクトリを検索するfind -type d
です。
これはすべてのサブフォルダーも検索することに注意してください--maxdepth
フラグを使用して深さを制御できます。
zsh
内:
(){echo $#} *(N/)
再帰的に:
(){echo $#} **/*(N/)
非表示のディレクトリもカウントする場合は、D
グロブ修飾子を追加します。
同等のPOSIX:
ls -p | grep -c /
(-A
オプションをls
に追加して非表示にできます)
再帰的に:
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'
tree
コマンドを試しましたか?
tree -d /path/to/maindir| awk END{print}
find . -type d -not -path '.' -printf 0 | wc -c ;
(。)ディレクトリではない現在のディレクトリ(find。)内のすべてのディレクトリ(-type d)を再帰的に検索し、見つかったディレクトリごとに0を出力します。次にwc -c
は、前のコマンド出力からの文字数(0)をカウントします。