Solution 1 :
/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
1 .6
1 .cache
1 .noconf
1 .php
1 .sl
2 .bin
2 .el
2 .tdb
4 .baseA
4 .baseB
4 .dat
4 .DB
27 .db
221 .deb
Voici l'explication :
find ./ -type f
rechercher uniquement le fichier, pas le répertoire
grep -E ".*\.[a-zA-Z0-9]*$"
fichier de filtre avec extension
sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'
supprimer le chemin et le nom du fichier, enregistrer uniquement l'extension
sort | uniq -c | sort -n
trier, uniq et trier
Solution 2 :
Puisque vous utilisez Linux (gnu grep), c'est le bon moment pour utiliser Perl REs (PCRE) -P
et le -o
de grep option. Prendre la réponse de @bindbn comme un excellent candidat :
find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n