Se você quiser apenas arquivos regulares,
Com o GNU find
:
find . -maxdepth 1 -type f -printf . | wc -c
Outro find
s:
find . ! -name . -prune -type f -print | grep -c /
(você não quer que -print | wc -l
não funcione se houver nomes de arquivo com caracteres de nova linha).
com zsh
:
files=(*(ND.)); echo $#files
com ls
:
ls -Anq | grep -c '^-'
Para incluir links simbólicos em arquivos normais, altere -type f
para -xtype f
com GNU find
ou -exec test -f {} \;
com outros find
s ou .
com -.
com zsh
ou adicione a opção -L
para ls
. Note, entretanto, que você pode obter falsos negativos nos casos em que o tipo do destino do symlink não pode ser determinado (por exemplo, porque ele está em um diretório ao qual você não tem acesso). / p>
Se você quiser qualquer tipo de arquivo (link simbólico, diretório, canais, dispositivos ...), não apenas regular:
find . ! -name . -prune -printf . | wc -c
(altere para -print | grep -c /
com não-GNU find
, (ND.)
para (ND)
com zsh
, grep -c '^-'
com wc -l
com ls
).
Isso, entretanto, não conta .
ou ..
(geralmente, ninguém se importa com eles, pois sempre estão lá), a menos que você substitua -A
por -a
por ls
.
Se você quiser todos os tipos de arquivos, exceto diretórios, Substitua -type f
por ! -type d
(ou ! -xtype d
para também excluir links simbólicos para diretórios) e com zsh
, substitua .
por ^/
e com ls
, substitua grep -c '^-'
por grep -vc '^d'
.
Se você deseja excluir arquivos ocultos, adicione um ! -name '.*'
ou com zsh
, remova o D
ou com ls
, remova o A
.