Por que ls -lh e ls -ldh me dão tamanho de arquivo variável?

1

Por que há uma diferença nos tamanhos dos arquivos, conforme indicado na captura de tela, ou seja, o tamanho total do arquivo em ls -lh é 44k, enquanto o tamanho da pasta é de apenas 4k? Estou lendo incorretamente?

    
por PeanutsMonkey 13.07.2011 / 22:17

2 respostas

5

Sim, você está lendo errado. 4.0K é o tamanho no disco que a entrada da pasta /tmp ocupa. Geralmente é sempre 4k (embora um pode subir dependendo de certos fatores). ls também não considera o espaço ocupado pelo conteúdo da subpasta.

O que você realmente quer ver é o comando du para ter uma boa noção do espaço total em disco.

gbeech@ny-man01:~$ ls -lh
total 3.6G

vs

gbeech@ny-man01:~$ du -sh
36G     .
    
por 13.07.2011 / 22:24
2

O ls -lh está fornecendo o tamanho do conteúdo de /tmp . O ls -ldh /tmp está fornecendo o tamanho do arquivo de diretório /tmp , que contém as informações sobre o conteúdo de /tmp .

No Linux / Unix, um diretório é apenas um arquivo contendo informações que a opção d diz listar a entrada directoy, não o seu conteúdo.

Editar

Se você quiser saber (aproximadamente) quanto espaço em disco está sendo usado por um conjunto de arquivos, du -h lhe dará isso. Se você quiser saber a soma dos tamanhos dos arquivos, du -b será mais preciso.

por exemplo,

du -h
56K     ./vmware-root
12K     ./.font-unix
8.0K    ./.ICE-unix
164K    .

du -b
28474   ./vmware-root
4096    ./.font-unix
4096    ./.ICE-unix
68798   .

A saída de du -b corresponde à saída de

find . -ls | awk '{total += $7} END {print total}'
68798

que é a soma dos tamanhos dos arquivos.

    
por 14.07.2011 / 00:00

Tags