Prueba esto (no estoy seguro si es la mejor manera, pero funciona):
find . -type f | perl -ne 'print $1 if m/\.([^.\/]+)$/' | sort -u
Funciona de la siguiente manera:
- Buscar todos los archivos de la carpeta actual
- Imprime la extensión de los archivos, si los hay
- Haga una lista ordenada única
No es necesario que la tubería vaya a sort
, awk puede hacerlo todo:
find . -type f | awk -F. '!a[$NF]++{print $NF}'
Versión recursiva:
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort -u
Si desea totales (cuántas veces se vio la extensión):
find . -type f | sed -e 's/.*\.//' | sed -e 's/.*\///' | sort | uniq -c | sort -rn
No recursivo (carpeta única):
for f in *.*; do printf "%s\n" "${f##*.}"; done | sort -u
He basado esto en esta publicación del foro, el crédito debe ir allí.