grep -RhFh '\*''*' | tr -s ' ' | sort | uniq -c
grep -hFh '\*''*' * 2>/dev/null | tr -s ' ' | sort | uniq -c
grep -hFh '\*''*' **/* 2>/dev/null | tr -s ' ' | sort | uniq -c | sed 's/.$//'
Or to avoid using 2>/dev/null:
find . -type f -exec grep -Fh '*' {} + | tr -s ' ' | sort | uniq -c | sed 's/.$//'
The section grep -RhFh '\*''*' means that will match any line which has a * at the end of this one. -R is recursive (so it will search in all files you have in the current directory) and -h suppress printing the filenames whose matches the pattern and -F is for using literal strings (the '*' behaves as a string and not as pattern).
About tr -s ' ' I'm removing repeated spaces between every line, for example having this:
grep -hFh '\*''*' * | tr -s ' ' | sort | uniq -c | sed 's/.$//'
#or
grep -hFh '\*''*' * | tr -s ' ' | sort | uniq -c | sed 's/\*//'
I think and hope there are better ways to achieve that, because here I'm using 5several commands to get the desired output. So as I said it may result in slow performance.