Como os nomes de arquivos / pastas podem conter novas linhas:
sudo find / -type f -printf '.' | wc -c
sudo find / -type d -printf '.' | wc -c
Isso contará qualquer arquivo / pasta no diretório /
atual. Mas, como aponta Muru, você pode querer excluir sistemas de arquivos virtuais / outros da contagem (o seguinte excluirá qualquer outro sistema de arquivos montado):
find / -xdev -type f -printf '.' | wc -c
find / -xdev -type d -printf '.' | wc -c
-
sudo find / -type f -printf '.'
: imprime um ponto para cada arquivo em/
; -
sudo find / -type d -printf '.'
: imprime um ponto para cada pasta em/
; -
wc -c
: conta o número de caracteres.
Veja um exemplo de como não cuidar de novas linhas em nomes de arquivos / pastas pode violar outros métodos, como, por exemplo, find / -type f | wc -l
e como usar find / -type f -printf '.' | wc -c
corrige:
% ls
% touch "file
\'dquote> with newline"
% find . -type f | wc -l
2
% find . -type f -printf '.' | wc -c
1
Se o STDOUT não for um terminal, find
imprimirá literalmente cada nome de arquivo / pasta; Isso significa que um nome de arquivo / pasta contendo uma nova linha será impresso em duas linhas diferentes, e que wc -l
contará duas linhas para um único arquivo / pasta, imprimindo um resultado em um.