Para arquivos, ls -l file
mostra (entre outras coisas) o tamanho de file
em bytes, enquanto du -k file
mostra o espaço ocupado por file
no disco (em unidades de 1 kB = 1204 bytes). Como o espaço em disco é alocado em blocos, o tamanho indicado por du -k
é sempre um pouco maior que o espaço indicado por ls -kl
(que é o mesmo que ls -l
, mas em unidades de 1 kB).
Para diretórios, ls -ld dir
mostra (entre outras coisas) o tamanho da lista de nomes de arquivos (junto com vários atributos) dos arquivos e subdiretórios em dir
. Esta é apenas a lista de nomes de arquivos, não o conteúdo dos arquivos ou subdiretórios. Portanto, esse tamanho aumenta quando você adiciona arquivos a dir
(mesmo quando os arquivos estão vazios), mas permanece inalterado quando um dos arquivos em dir
cresce.
No entanto, quando você exclui arquivos de dir
, o espaço da lista não é recuperado imediatamente, mas as entradas dos arquivos excluídos são marcadas como não usadas e depois são recicladas (isso depende da implementação, mas o que eu descrito é praticamente o comportamento universal nos dias de hoje). É por isso que você pode não ver nenhuma alteração na saída ls -ld
quando excluir arquivos até muito mais tarde, se é que vai acontecer.
Finalmente, du -ks dir
mostra (uma estimativa) do espaço ocupado no disco por todos os arquivos em dir
, junto com todos os arquivos em todos os subdiretórios dir
, em unidades de 1 kB = 1024 bytes. Levando em conta a descrição acima, isso não tem qualquer relação com a saída de ls -kld dir
.