Obtenha todas as extensões e sua respectiva contagem de arquivos em um diretório

14

Obtendo todas as extensões de um diretório: fácil. Obtendo contagens de arquivos para uma extensão específica: fácil.

Mas obter todas as extensões de arquivo e suas respectivas contagens de arquivo está me aludindo.

por exemplo,

+ dir
 + abc.txt
 + def.txt
 + abc.pdf
 * def.pov

deve retornar algo como:

.txt 2
.pdf 1
.pov 1

O objetivo deste exercício é que eu quero descobrir qual extensão de arquivo é popular em um determinado diretório.

Obrigado antecipadamente

    
por denormalizer 22.09.2010 / 07:06

1 resposta

46
/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$//' | sort | uniq -c | sort -n
      1 .6
      1 .cache
      1 .noconf
      1 .php
      1 .sl
      2 .bin
      2 .el
      2 .tdb
      4 .baseA
      4 .baseB
      4 .dat
      4 .DB
     27 .db
    221 .deb

Aqui está a explicação:

find ./ -type f

encontra apenas o arquivo, não o diretório

grep -E ".*\.[a-zA-Z0-9]*$"

arquivo de filtro com extensão

sed -e 's/.*\(\.[a-zA-Z0-9]*\)$//'

exclua o caminho e o nome do arquivo, salve apenas a extensão

sort | uniq -c | sort -n

classificar, uniq e ordenar

    
por 22.09.2010 / 07:13