du
faz uma travessia em profundidade da árvore dada. Por padrão, ele mostra o uso de cada árvore de diretórios, mostrando o uso de disco inclusivo de cada:
$ du ~
4 /home/bob/Videos
40 /home/bob/.cache/abrt
43284 /home/bob/.cache/mozilla/firefox
43288 /home/bob/.cache/mozilla
12 /home/bob/.cache/imsettings
48340 /home/bob/.cache
4 /home/bob/Documents
48348 /home/bob
Se for dada a opção -a
, ela mostrará adicionalmente o tamanho de cada arquivo.
Com a opção -s
, ele mostrará apenas o tamanho total de cada arquivo de argumento ou árvore de diretórios.
$ du -s ~
48348 /home/bob
$ du -s ~/*
4 /home/bob/Videos
4 /home/bob/Documents
Então, quando você correu
$ du -b ~ | wc -l
15041
$ du -b ~ | sort -n | head -n 15040 | cut -f 1 | \
perl -ne 'BEGIN{$i=0;$i+=$_;END{print $i.qq|\n|;}'
12735983847
você estava somando o tamanho de tudo em seu diretório pessoal - várias vezes, infelizmente, porque o tamanho relatado em cada linha inclui todos os subdiretórios - mas porque você omitiu a linha final da saída de du, que seria a linha para /home/steven
, du
não contava o tamanho de nenhum dos arquivos regulares no nível superior de seu diretório pessoal . Portanto, a soma não incluiu o arquivo .xsession-errors
muito grande.
e quando você correu
du -sb ~ returns 91296460205, but the sum of du -sb ~/* is only 1690166532
sua saída du -sb ~/*
não incluiu nenhum arquivo ou diretório em seu diretório inicial que comece com .
.
O du ~ | tail -1
e o du -s ~
devem fazer um trabalho razoável de mostrar o uso do disco do seu diretório home (não incluindo arquivos excluídos, mas claro), mas se você quiser resumir todos os tamanhos de arquivo sem depender em du
, você pode fazer algo assim (assumindo que um find
moderno suporta o formato printf %s
para mostrar o tamanho em bytes):
find ~ -type f -printf '%s\n' | perl -ne 'BEGIN{$i=0;$i+=$_;END{print $i.qq|\n|;}'