com zsh
:
count() echo $#
count * # non-hidden files (all types)
count *(D) # files (all types)
count **/*(D) # files recursively (all types)
count **/*(D/) # directories only (recursively)
( zsh
globs nunca inclui .
nem ..
mesmo quando dotglob
está habilitado (como com o qualificador% glob_de (D)
)).
Para evitar uma mensagem de erro quando não houver arquivo, adicione o qualificador N
globbing:
count *(ND)
Isso faz com que o glob se expanda em nada (nenhum argumento, não um argumento vazio) se não houver correspondência.
Observe que, como o caractere de nova linha é um caractere tão válido quanto qualquer outro em um nome de arquivo, canalizar a saída de ls
ou find
para wc -l
não está correto.
POSIXly, você pode contar os caracteres /
em vez dos novos:
find . ! -name . -prune -print | grep -c /
Ou recursivamente, usando este truque:
find .//. ! -name . -prune -print | grep -c //