Contar o número de arquivos em um diretório no Linux? [fechadas]

333

Para contar o número de arquivos em um diretório, eu normalmente uso

ls directory | wc -l

Mas existe outro comando que não usa wc?

Kantura
fonte
16
Qual é exatamente o problema wcque impede você de usá-lo?
Vanza
5
Na verdade não. Os comandos Unix geralmente se destinam a ser usados ​​dessa maneira, encadeados em pipes.
Michael Berkowski
2
Estou conectando via ssh a outro host para acessar alguns dados. Infelizmente, vários comandos básicos parecem não funcionar neste host. Se eu usar o wc, ele retornará "comando não reconhecido". Então, eu estou procurando outras opções.
Kantura
7
Use o treecomando Ele fornecerá a árvore e, na parte inferior, informará quantos arquivos e diretórios existem. Se você quiser arquivos ocultos, use também tree -a.
Elias Lynn
5
@vanza " Qual é exatamente o problema com o wc ", e se um arquivo tiver um \nno nome do arquivo? Sim, extremamente improvável! Mas ainda tecnicamente válido e possível.
JamesThomasMoon1979

Respostas:

524

isso é um:

ls -l . | egrep -c '^-'

Nota:

ls -1 | wc -l

O que significa:: lslistar arquivos no diretório

-1: (isso é ONE) apenas uma entrada por linha. Altere para -1a se você quiser arquivos ocultos também

|: saída do tubo para ...

wc: "contagem de palavras"

-l: contar lines.

Sajad Karuthedath
fonte
1
Não espera. Eu fiz um booboo. Você está absolutamente certo, Sajad Lfc. ls -1 dir | egrep -c '' Isso retorna o número de arquivos no diretório Obrigado .
Kantura
1
@SajadKaruthedath ls -l . | egrep -c '^-'não conta arquivos ocultos. Sugiro adicionar -asinalizador para ls.
JamesThomasMoon1979
1
@ JamesThomasMoon1979: por favor, verifique minha descrição
Sajad Karuthedath
1
Isso mostra erro quando não há arquivos na pasta. Use ls -1 /dir 2>/dev/null | wc -l. Aqui a saída de ls é direcionada para / dev / null e o resultado é um zero limpo
Sathish
6
@runios é porque ls -lretorna uma linha adicional na parte superior, adicionando os tamanhos dos arquivos para um valor total. Você deve usar ls -1e não o ls -l. Além disso, se alguém quiser arquivos ocultos, mas sem os diretórios .e ..você deve usarls -1A | wc -l
Daniel Biegler