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 .