Use tree :
$ tree foo
foo
├── bar
│ ├── baz
│ └── foo3
└── foo2
2 directories, 2 files
Ou você pode combinar find e awk :
find foo -type d -printf "d\n" -o -type f -printf "f\n" | awk '/f/{f++}/d/{d++}END{printf "%d directories, %d files\n", d, f}'
Ou generalizando:
find foo -printf "%y\n" | awk '/f/{f++}/d/{d++}END{printf "%d directories, %d files\n", d, f}'
Se você não se importa com uma saída concisa:
find foo -printf "%y\n" | sort | uniq -c
Isso contará mais um diretório do que tree - o diretório inicial não é contado na saída de tree .