Get counts of directory depth levels with find, awk, uniq and sort
Let's say we've got a bunch of directories and we'd like to get counts of how many directories are how many levels deep.
Our directory structure:
$ find . -type d
.
./test1
./test1/test1.1
./test2
./test2/test2.1
./test2/test2.1/test2.2
./test3
./test3/test3.1
./test3/test3.1/test3.2
./test3/test3.1/test3.2/test3.3
There are a number of ways to do this, but I found awk to be most elegant as I wanted to be able to substract an arbitrary number from the result and awk can count and do arithmetic all by itself:
$ find . -type d | while read f; do awk -F'/' '{print NF -1}' | sort | uniq -c | sort -nr; done
3 2
3 1
2 3
1 4
Leave a comment