Réponses:
find . -type f -name '*.*' -exec sh -c 'echo ${0##*.}' {} \; | sort | uniq -c | sort -nr
le echo ${0##*.} vous donne l'extension du fichier. Nous canalisons la sortie vers sort puis compter les lignes uniques avec uniq.
Quelques ajouts:
uniq n'est pas trié en fonction du nombre d'occurrences, vous devrez rediffuser un tri numérique ( -nr ) si vous voulez le trier. -maxdepth 1 à ton find commander. awk '{print $2, $1}' pour montrer le compte après les extensions. -name '*.*' l'option restreint find aux fichiers avec des extensions seulement. Si vous laissez cela de côté, vous obtiendrez un nombre de 1 pour chaque fichier, ce qui risque de ne pas être idéal.
sh processus prend un peu plus de temps d'exécution, filtrant les résultats avec find sera un peu plus rapide, je suppose.