Supondo que você tenha du do GNU coreutils, este comando deve calcular o tamanho aparente total do número arbitrário de arquivos regulares dentro de um diretório, sem nenhum limite arbitrário no número de arquivos:
find . -type f -print0 | du -scb --files0-from=- | tail -n 1
Adicione a opção -l a du se houver alguns arquivos com hardlink dentro, e você quiser contar cada hardlink separadamente (por padrão, du contará vários hardlinks apenas uma vez).
A diferença mais importante com o du -sb simples é que a% recursivadu também conta os tamanhos dos diretórios, que são reportados de forma diferente por diferentes sistemas de arquivos; para evitar isso, o comando find é usado para transmitir apenas arquivos regulares para du . Outra diferença é que os links simbólicos são ignorados (se eles devem ser contados, o comando find deve ser ajustado).
Esse comando também consumirá mais memória do que o du -sb , porque usar o --files0-from=FILE faz du armazenar números de dispositivos e inode de todos arquivos processados, em oposição ao comportamento padrão de lembrando apenas arquivos com mais de um link físico. (Isso não é um problema se a opção -l for usada para contar hardlinks várias vezes, porque o único motivo para armazenar os números de dispositivo e inode é ignorar os arquivos com link físico que já haviam sido processados.)
Se você deseja obter uma representação legível do tamanho total, basta adicionar a opção -h (isso funciona porque du é invocado apenas uma vez e calcula o tamanho total, ao contrário de outras respostas sugeridas):
find . -type f -print0 | du -scbh --files0-from=- | tail -n 1
ou (se você estiver preocupado que alguns efeitos de -b sejam substituídos por -h )
find . -type f -print0 | du -sc --apparent-size -h --files0-from=- | tail -n 1