Solution using array:
Take extension list from current directory and subdirectories. Look your ls -1R output, if this need fixing (special lines like directory). This use assosiative array of ksh.
#!/bin/ksh
#listext
typeset -A exts
ls -1R | while read line
do
case "$line" in
"") continue ;; # empty line
*:) continue ;; # dir
esac
ext=${line##*.}
[ "$ext" = "$line" ] && continue # no ext
# or if you like to count also files without ext, then ex. mark those -
# "$ext" = "$line" ] && ext="-"
exts["$ext"]=1
done
for ext in ${!exts[*]}
do
echo "$ext"
done