Como contar o número de arquivos em um diretório, mas não recursivamente


30

Pergunta simples, tenho certeza. Vi uma resposta que mostra como fazê-lo, incluindo subdiretórios, mas quero saber quantos arquivos (não pastas) estão apenas no diretório atual. Obrigado.

Respostas:


60
ls -F |grep -v / | wc -l
  1. ls -F liste todos os arquivos e inclua o indicador (um de * / => @ |) nas entradas
  2. grep -v /mantenha todas as strings que não contêm uma barra
  3. wc -l linhas de contagem

Lista de tudo, exceto diretórios.
Thom

Eu realmente aprecio que você explique e explique as seções, obrigado por uma resposta útil e bem explicada!
precisa saber é o seguinte

1
Embora todas as respostas resolvam meu problema, estou escolhendo esta como documentada e mais fácil para eu entender. Mas obrigado a todos!
precisa saber é o seguinte

15

Experimente este oneliner:

find -maxdepth 1 -type f | wc -l

Isto é bom, apenas arquivos e nada mais :-)
Thom

Isso pula links e dispositivos de caracteres especiais.
ojblass

Todas as respostas aqui funcionam muito bem! Então, primeiro, obrigado. Segundo ... como eu escolho?
precisa saber é o seguinte

6

Tente isto

ls -al | grep ^[-] | wc -l
  1. ls -al - lista todos os arquivos com formato de listagem longo
  2. grep ^[-] - procure uma string que comece com "-", que é o símbolo para denotar arquivo regular quando listar arquivo com ls -al
  3. wc -l - linhas de contagem

E os links flexíveis? E quanto aos arquivos vinculados?

Bom, apenas arquivos e links, nada mais.
Thom

Para jut link macio / rígido, substitua -porl
andr3w 4/11/2013

Eu realmente aprecio que você explique e explique as seções, obrigado por uma resposta útil e bem explicada!
precisa saber é o seguinte

2

Eu só quero adicionar a resposta de thom porque eu gosto de brincar com o Bash . Aqui vai:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Abaixo está um exemplo de resultado do meu /datadiretório:

Directory /data has 580569 file(s).

E abaixo estão minhas explicações:

  1. echo double-quoted-message imprimirá uma mensagem desejável.
  2. $(any-desirable-valid-command)dentro da mensagem de aspas duplas de um echoimprimirá o resultado da execução de comando relacionada.
  3. pwd irá imprimir o diretório atual.
  4. ls -Fserve para listar todos os arquivos e anexar o indicador (um de * / => @ |) às entradas. Copiei isso da resposta de thom .
  5. grep -v /é um comando para pesquisar texto sem formatação, o -v /parâmetro manterá todas as seqüências que não contêm barra (s).
  6. wc -l imprimirá a contagem de linhas.

Eu sei que esta pergunta tem 3 anos, mas não consigo segurar minha vontade de adicionar outra resposta.


2

Se você treeinstalou no seu sistema, pode usar este comando:

tree -L 1 /path/to/your/directory | tail -n 1

Ele mostra o número de arquivos e diretórios nesse diretório.

-L n mostra a profundidade da pesquisa.

Você pode instalar treecom sudo apt-get install tree.


-3

Para contar o número total de arquivos com extensão específica, você pode digitar:

ls|grep jpg |wc -l
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.