Listar todas as extensões de arquivo em uma arborescência e contar o número de ocorrências de cada [duplicata]

0

Eu estou procurando uma função de shell simples (bash preferida) para listar todas as extensões de arquivo em uma arborescência e contar o número de ocorrências de cada uma.

Por exemplo, list_extensions . retornaria algo como:

pdf 134
tex 42
cpp 30
...

Um plus seria também contar o arquivo sem extensões.

    
por bela83 03.05.2015 / 17:21

1 resposta

1

Como don_crissti declarou em um comentário, esta questão é uma duplicata e a resposta pode ser encontrada aqui . No entanto, você também deseja contar arquivos sem extensões. Esta é a minha chance:

echo no_ext $(find . -type f -exec sh -c 'echo $(basename "{}")' \; | grep -v '\.' | wc -l)

Vou tentar explicar os comandos subsequentes e o seu propósito.

Primeiro, usamos find para encontrar arquivos regulares e encaminhar seus respectivos caminhos por meio do comando basename de uma maneira bastante complicada.

find . -type f -exec sh -c 'echo $(basename "{}")' \;

Em segundo lugar, podemos simplesmente procurar por nomes de arquivos sem um período neles, usando grep no modo invertido.

grep -v

O último passo é contar o número de linhas.

wc -l

Isso pode ser alimentado no eco. Combinar tudo isso resulta no comando acima.

EDIT: Eu uso substituição de comando para concatenar um rótulo, neste caso 'no_ext' para o número computado. Você também pode executar o comando entre parênteses por si só sem o eco para imprimir apenas o número computado.

    
por 03.05.2015 / 18:28

Tags