Não é uma aceleração fundamental, mas pelo menos alguma coisa:)
find . -printf \n | wc -l
Você realmente não precisa passar a lista de nomes de arquivos, apenas as novas linhas são suficientes. Esta variante é cerca de 15% mais rápida no meu Ubuntu 12.04.3 quando os diretórios são armazenados em cache na RAM. Além disso, essa variante funcionará corretamente com nomes de arquivos contendo novas linhas.
Curiosamente, esta variante parece ser um pouco mais lenta do que a acima:
find . -printf x | wc -c
Caso especial - mas muito rápido
Se o diretório estiver em seu próprio sistema de arquivos, você pode simplesmente contar os inodes:
df -i .
Se o número de diretórios e arquivos em outros diretórios diferentes do contado não mudarem muito, você pode simplesmente subtrair esse número conhecido do resultado atual df -i
. Desta forma, você poderá contar os arquivos e diretórios muito rapidamente.