Localiza o número de arquivos na pasta e nas subpastas?

107

Eu quero encontrar a contagem total do número de arquivos em uma pasta e todas as suas subpastas.

    
por topless 08.04.2011 / 13:55

9 respostas

170

Pode ser algo como

find . -type f | wc -l

faria o truque. Tente o comando da pasta pai.

    
por sagarchalise 08.04.2011 / 14:06
21

Use o comando tree . Pode ser necessário instalar o pacote tree .

Ele listará todos os arquivos e pastas na pasta especificada e listará um resumo no final.

    
por Egil 08.04.2011 / 14:09
9

A maneira mais rápida e fácil é usar tree . Sua velocidade é limitada pelo seu terminal de saída, então se você canalizar o resultado para tail -1 , você obterá resultados imediatos. Você também pode controlar em qual nível de diretório você gosta dos resultados, usando a opção -L . Para saída colorida, use -C . Por exemplo:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Se ainda não estiver lá, você pode obter aqui .

    
por not2qubit 15.01.2014 / 14:20
8

Para contar arquivos (mesmo arquivos sem extensão) na raiz do diretório atual, use:

ls -l | grep ^- | wc -l

Para contar arquivos (mesmo arquivos sem uma extensão) recursivamente da raiz do diretório atual, use:

ls -lR | grep ^- | wc -l
    
por user38537 12.11.2013 / 21:39
4
find -type f -printf . | wc -c

Não conte as linhas de saída de find, porque os nomes dos arquivos, contendo 99 novas linhas, contarão como 100 arquivos.

    
por user unknown 08.04.2011 / 16:21
2

Use este comando para cada pasta no caminho

for D in *; do echo $D; find $D -type f| wc -l; done
    
por Sriram Murali 20.03.2014 / 19:02
1

find parece ser mais rápido que tree, então usei abaixo para contar arquivos em cada diretório do diretório de trabalho atual (ignorando arquivos no CWD) permitindo que os diretórios possuam espaços:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

    
por Mike Bounds 21.07.2016 / 11:47
0

Você pode usar find . | wc -l

find . listará todos os arquivos e pastas e o conteúdo de sua pasta atual.
wc -l conta os resultados de find

    
por david 08.04.2011 / 14:06
0

Eu escolheria essa opção:

  

ls-al | grep -c ^ -

    
por Charles 29.05.2016 / 08:55