Essayez ceci (je ne sais pas si c'est le meilleur moyen, mais ça marche) :
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
Cela fonctionne comme suit :
- Rechercher tous les fichiers du dossier actuel
- Imprime l'extension des fichiers, le cas échéant
- Créer une liste triée unique
Pas besoin du tuyau vers sort
, awk peut tout faire :
find . -type f | awk -F. '!a[$NF]++{print $NF}'
Version récursive :
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort -u
Si vous voulez des totaux (combien de fois l'extension a été vue) :
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort | uniq -c | sort -rn
Non récursif (dossier unique) :
for f in *.*; do printf "%s\n" "${f##*.}"; done | sort -u
J'ai basé cela sur ce post du forum, le crédit devrait y aller.