O que está acontecendo é que xargs
coloca (se puder) todos os nomes em uma linha de comando, para que você veja apenas um comando passado para du
. Então du
ignora os nomes dos arquivos (como você poderia esperar: os arquivos são parte dos diretórios e não os contará duas vezes).
Se você usar um parâmetro -n 1
para xargs
, ele dividirá o comando e você verá algo mais conforme o esperado.