'ls -lS' não está mostrando o tamanho real do diretório

2

Eu usei o comando ls -lS no meu diretório pessoal. Esse comando deve listar o conteúdo de um diretório por tamanho. Isto é o que eu consegui depois de executar este comando

total 10148
-rw-rw-r--  1 rahul rahul 8053159 May 15 15:35 Costa_ODE.pdf
-rw-rw-r--  1 rahul rahul 1755507 May 15 17:33 gnuplot.pdf
-rw-rw-r--  1 rahul rahul  218048 May 13 22:14 out.log
-rw-rw-r--  1 rahul rahul   98131 Feb 16 01:53 hs_err_pid8639.log
-rw-rw-r--  1 rahul rahul   12364 Apr 19 14:01 Untitled 1.csv
drwxr-xr-x  4 rahul rahul   12288 Jun  6  2016 cfitsio
-rw-r--r--  1 rahul rahul    8980 Feb  7  2016 examples.desktop
drwxrwxr-x  2 rahul rahul    4096 Mar 10 12:24 bin
drwxrwxr-x  8 rahul rahul    4096 May  8 14:51 boxfitv2
drwxrwxrwx  2 rahul rahul    4096 Jan 30 11:50 dao2
drwxrwxr-x  2 rahul rahul    4096 Mar 12  2016 deja-dup
drwxr-xr-x  6 rahul rahul    4096 May 16 02:12 Desktop
drwxr-xr-x  3 rahul rahul    4096 May 15 10:53 Documents
drwxr-xr-x  5 rahul rahul    4096 May  8 14:09 Downloads
.
.
.
.

e é uma lista bem grande. Mas quero que você se concentre em subdiretórios, como o Desktop. Seu tamanho é mostrado como 4096 bytes. Mas quando tentei ver os detalhes do Desktop, foi isso que consegui.

Em suma, o comando ls -lS não está calculando o tamanho do conteúdo do Desktop e de outros subdiretórios. Existe alguma maneira de fazer isso?

EDITAR:

Saída do comando ls -lsh

total 10M
4.0K drwxrwxr-x  2 rahul rahul 4.0K Mar 10 12:24 bin
4.0K drwxrwxr-x  8 rahul rahul 4.0K May  8 14:51 boxfitv2
4.0K -rw-rw-r--  1 rahul rahul 3.2K May 13 13:28 c.c
 12K drwxr-xr-x  4 rahul rahul  12K Jun  6  2016 cfitsio
7.7M -rw-rw-r--  1 rahul rahul 7.7M May 15 15:35 Costa_ODE.pdf
4.0K drwxrwxrwx  2 rahul rahul 4.0K Jan 30 11:50 dao2
   0 -rw-rw-r--  1 rahul rahul    0 May 13 20:37 default.txt
4.0K drwxrwxr-x  2 rahul rahul 4.0K Mar 12  2016 deja-dup
4.0K drwxr-xr-x  6 rahul rahul 4.0K May 16 17:11 Desktop
4.0K drwxr-xr-x  3 rahul rahul 4.0K May 15 10:53 Documents
4.0K drwxr-xr-x  5 rahul rahul 4.0K May  8 14:09 Downloads
 12K -rw-r--r--  1 rahul rahul 8.8K Feb  7  2016 examples.desktop
.
.
.

Saída do comando du -sh ~/Desktop

80M /home/rahul/Desktop
    
por RD017 16.05.2017 / 13:41

2 respostas

3

ls -lS está realmente mostrando o tamanho real do diretório : o próprio diretório + referências a qualquer arquivo contido no diretório fornecido.

Você pode usar du em vez de ls :

du -h --max-depth=1 | sort -hr

du : estima o uso de espaço no arquivo recursivamente para diretórios

h : legível por humanos

--max-depth=1 : para verificar apenas os diretórios dentro do diretório atual

sort -hr : classifica de forma decrescente

    
por 16.05.2017 / 14:02
1

ls mostra o tamanho dos arquivos regulares (ou, no caso de diretórios, o tamanho de seus inodes, não apenas seu conteúdo, já que não tem uma maneira rápida de determinar isso, enquanto para arquivos regulares, o tamanho é conhecido e, portanto, pode ser exibido de forma exata e rápida).

Na verdade, esse campo difere dependendo do que o arquivo representa:

  • para arquivos comuns: mostra o tamanho real deles
  • para links simbólicos (links simbólicos, ln -s source dest ): o comprimento do nome do link simbólico (como este é o conteúdo do arquivo simbólico). (ex: o link simbólico /dev/fd -> /proc/self/fd : tem um caminho de destino com exatamente 13 caracteres ( / p r o c / s e l f / f d ), então ls -l exibirá "13" na quinta coluna, em vez do tamanho do arquivo apontado.)
  • para diretórios: o tamanho de um inode (se o conteúdo das entradas do diretório se encaixa em um) ou vários inodes (se houver necessidade de vários inodes para descrever a lista das entradas desse diretório). É por isso que você vê 4096 para a maioria deles: geralmente eles não têm muitos arquivos dentro deles, então eles se encaixam em 1 inode, que normalmente é 4096 bytes por padrão. Se você colocar MUITOS arquivos em algum diretório, isso aumentará (e provavelmente permanecerá ativo depois, a menos que você recrie o próprio diretório).
  • para pipes e outros tipos de arquivos: cada vez que o campo normalmente associado ao tamanho pode ou não ser um tamanho (ex: para dispositivos de bloco (ex: arquivos / dev / hd *) ele não mostra tamanho mas, em vez disso, mostra seu par de informações major, minor . Consulte man mknod . Consulte man ls para ver como eles também são identificados.

Para saber a soma do conteúdo dos diretórios + subdiretores:

  • du /some/path # será exibido para cada diretório: a soma de seu conteúdo (incluindo subdiretórios) e mostra que, para cada diretório em e abaixo de /some/path

  • du -s /some/path # mostrará apenas 1 nível, ou seja, apenas o total de / algum / caminho

  • du -S /some/path # mostra o conteúdo de cada diretório, não incluindo seus subdiretórios. Útil para saber exatamente quais subdiretórios de / algum / caminho são grandes.

Consulte o link para obter mais detalhes.

    
por 16.05.2017 / 14:25

Tags