I know this thread is old but, this is one of top results when searching for "bash count file extensions".
I encountered the same problem as you and created a script similar to maxschlepzig
Here is the command i made that counts the extensions of all files in the working directory recursively. This takes into account UPPER, and LOWER cases, merging them, removing false positive results, and counting the occurrences.
find . -type f | tr '[:upper:]' '[:lower:]' | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
find . -type f \
| tr '[:upper:]' '[:lower:]' \
| grep -E ".*\.[a-zA-Z0-9]*$" \
| sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' \
| sort |
| uniq -c \
| sort -n
Here is the github link if you'd like to see more documentation.