Obter lista de terminais de arquivos distintos em um diretório (shell UNIX)

1

Eu tenho um diretório com muitos arquivos de imagem em diferentes formatos. Eu gostaria de ver uma lista de todas as terminações de arquivo distintas nesse diretório, para que eu possa ver que tipo de formatos de imagem estão presentes. Então, supondo que haveria apenas arquivos png , gif e jpg , minha saída desejada seria:

png
gif
jpg

Eu sei como obter uma lista de todos os finais de arquivo usando ls e cut , mas não sei como fazer com que contenham apenas entradas exclusivas. Existe uma maneira de fazer isso usando apenas ferramentas de shell, ou eu tenho que escrever um pequeno script python ou similar?

    
por lethal-guitar 16.04.2013 / 15:25

2 respostas

7
$ ls *.* | nawk -F\. '{print $(NF);}' | sort | uniq

Se você quiser saber quantos de cada tipo:

$ ls *.* | nawk -F\. '{print $(NF);}' | sort | uniq -c
    
por 16.04.2013 / 15:34
0

Existe sempre um jeito.

function alsoHidden {
    find . -maxdepth 1 -type f -printf '%f\n';
}
$ alsoHidden | sed -E 's/.*\.(.*)//' | sort -u

$ alsoHidden | tr . / | xargs -I% basename % | sort -u

$ alsoHidden | awk -F. ' !a[$NF] { print $NF; a[$NF]++ }'
    
por 16.04.2013 / 18:57