Como posso contar o número de pastas em uma unidade usando o Linux?

24

Eu preciso organizar um disco rígido externo de modo que não haja mais de 500 pastas nele. O painel "Propriedades" do Ubuntu mostra apenas a contagem de arquivos, não a contagem de pastas.

Existe uma linha de comando simples que me informará o número de subdiretórios?

Eu preciso contar recursivamente, e a unidade é um disco rígido externo montado em /media/MUSIC/ . É para um sistema de som do carro cuja documentação diz que só lê as primeiras 500 pastas.

    
por Dean Rather 09.04.2010 / 07:55

9 respostas

20

Navegue até a sua unidade e simplesmente execute

ls -lR | grep ^d | wc -l
    
por 02.08.2013 / 06:46
34

Encontre todas as pastas no total, incluindo os subdiretórios?

find /mount/point -type d | wc -l

... ou encontra todas as pastas no diretório raiz (sem incluir subdiretórios)?

find /mount/point -maxdepth 1 -type d | wc -l
    
por 09.04.2010 / 08:04
4

Novas linhas são caracteres válidos em nomes de diretório. Sugiro deixar find imprimir uma linha vazia para cada diretório encontrado e, em seguida, deixar wc contar essas linhas.

find /mount/point -type d -printf '\n' | wc -l
    
por 17.05.2011 / 20:23
3

Tente o seguinte [veja abaixo]:

ls -1 -p | grep "/" | wc -l

Isso imprimirá uma lista de uma coluna do diretório atual, com barras no final dos itens que são subdiretórios, e contará as linhas com as barras.

EDIT: você provavelmente deve ir com a resposta do quack quixote, já que é um pouco mais explícito, mas eu corrigi o meu (depois de levar em conta as sugestões do quack).

ls -Rp | grep "/$" | wc -l
    
por 09.04.2010 / 07:59
1

Eu escrevi ffcnt para acelerar a contagem recursiva de arquivos em circunstâncias específicas: discos rotacionais e sistemas de arquivos que suportam mapeamento de extensão.

Pode ser uma ordem de magnitude mais rápida do que do que as abordagens baseadas em ls ou find

    
por 27.01.2017 / 22:49
1

Quando há um grande número de diretórios, ferramentas como tree podem levar uma eternidade para serem concluídas ou até interrompidas, portanto, talvez você queira usar algo mais eficiente.

A maneira mais eficiente de contar os diretórios em que posso pensar seria a seguinte, pois find imprimirá apenas um . para cada pasta encontrada em vez do caminho e nome de arquivo completos e wc precisará apenas iterar sobre o número de caracteres:

find /mount/point -type d -printf '.' |wc -c

Para excluir /mount/point do cálculo e contar apenas os subdiretórios:

find /mount/point -mindepth 1 -type d -printf '.' |wc -c
    
por 05.02.2018 / 20:08
1

Eu achei du --inodes útil, mas não tenho certeza de qual versão de du é necessária. No Ubuntu 17.10, os seguintes trabalhos:

du --inodes      # all files and subdirectories
du --inodes -s   # summary
du --inodes -d 2 # depth 2 at most

Combine com | sort -nr para classificar em ordem decrescente pelo número de inodes contendo.

    
por 17.06.2018 / 18:53
0

Eu gosto de usar a árvore para extrair a contagem de diretórios com

tree -d -R -fi --noreport | wc -l

Ou, use mal achado para mostrar a maior parte das pastas estão localizadas com

find . -type d -printf "%h\n" | cut -d/ -f-2 | sort | uniq -c | sort -rn
    
por 03.08.2014 / 03:52
-2

Para encontrar o número de pastas e diretório no diretório atual

Digite o seguinte comando no seu terminal

echo */ | wc
    
por 17.07.2015 / 12:48