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.

bcsteeve
fonte

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
thom
fonte
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
amc
fonte
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
andr3w
fonte
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.

Aditya Kresna
fonte
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.

MOHRE
fonte
-3

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

ls|grep jpg |wc -l
Alexander Chip
fonte