Você não está classificando o arquivo antes de filtrá-lo. Na página de manual :
Note:
uniq
does not detect repeated lines unless they are adjacent. You may want to sort the input first, or usesort -u
withoutuniq
. Also, comparisons honor the rules specified byLC_COLLATE
.
Você também precisa processar todas as linhas que deseja contar de uma só vez. Atualmente, você está processando tipos de arquivo um de cada vez, então uniq -c
diz corretamente que você tem um de cada - ele só vê um tipo de arquivo de cada vez.
file * | sort | uniq -c
seria mais apropriado (presumivelmente com um glob mais específico, ou até mesmo uma lista de arquivos para processar).