Prova questo (non sono sicuro che sia il modo migliore, ma funziona):
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
Funziona come segue:
- Trova tutti i file dalla cartella corrente
- Stampa l'estensione dei file, se presenti
- Crea un elenco ordinato univoco
Non c'è bisogno che la pipe vada a sort
, awk può fare tutto:
find . -type f | awk -F. '!a[$NF]++{print $NF}'
Versione ricorsiva:
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort -u
Se vuoi i totali (quante volte è stata vista l'estensione):
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort | uniq -c | sort -rn
Non ricorsivo (cartella singola):
for f in *.*; do printf "%s\n" "${f##*.}"; done | sort -u
Mi sono basato su questo post del forum, il merito dovrebbe andare lì.