Respostas:
Pode ser algo como
find . -type f | wc -l
faria o truque. Tente o comando da pasta pai.
find . -type f -ls | wc -l
find . -type f -print0 | tr -d -c '\0' | wc -c
find . -type f -printf . | wc -c
- Adotei a impressão para a minha solução em vez do meu eco -exec.
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 extensão) recursivamente a partir da raiz do diretório atual, use:
ls -lR | grep ^- | wc -l
A maneira mais rápida e fácil, é usar tree
. Sua velocidade é limitada pelo seu terminal de saída; portanto, se você canalizar o resultado tail -1
, obterá um resultado imediato. Você também pode controlar para qual nível de diretório você gosta dos resultados, usando a -L
opção 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 obtê-lo aqui .
find -type f -printf . | wc -c
Não conte as linhas de saída de localização, porque os nomes de arquivos, contendo 99 novas linhas, contarão como 100 arquivos.
Use este comando para cada pasta no caminho
for D in *; do echo $D; find $D -type f| wc -l; done
find parece ser mais rápido que a árvore, 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 tenham espaços:
ls -d */ | while read dir_line
do
echo -n "$dir_line :"
find "$dir_line" -type f | wc -l
done
ls
é uma péssima idéia.
Você pode usar find . | wc -l
find .
listará todos os arquivos e pastas e seus conteúdos, começando na sua pasta atual.
wc -l
conta os resultados de encontrar
Eu mesmo usaria esta opção:
ls -alR | grep -c ^ -