Script de shell para localizar todos os tipos de arquivos em um diretório com suas contagens

7

Eu quero escrever um shell script ou alias para encontrar o número de diferentes tipos de arquivos em um diretório. Por exemplo, a saída de amostra do script deve ser:

*.h      20
*.c      40
*.cpp    10
Makefile 3
    
por manav m-n 04.09.2013 / 12:09

1 resposta

8
find . -type f -name '*.*' -exec sh -c 'echo ${0##*.}' {} \; | sort | uniq -c | sort -nr

O echo ${0##*.} fornece a extensão do arquivo. Nós canalizamos a saída para sort e depois contamos as linhas exclusivas com uniq .

Algumas adições:

  • Como a saída de uniq não é classificada de acordo com o número de ocorrências, você precisará enviar novamente para uma classificação numérica ( -nr ), se desejar classificá-la.
  • Se você quiser pesquisar somente o diretório atual, adicione -maxdepth 1 ao comando find .
  • Canalize em awk '{print $2, $1}' para mostrar a contagem após as extensões.
por 04.09.2013 / 12:20