Questão Como determino o tamanho total de um diretório (pasta) na linha de comando?


Existe um comando simples para exibir o tamanho total do agregado (uso do disco) de todos os arquivos em um diretório (pasta)?

Eu tentei estes, e eles não fazem o que eu quero:

  • ls -l, que exibe apenas o tamanho dos arquivos individuais em um diretório, nem
  • df -h, que exibe apenas o espaço livre e usado em meus discos.

685
2017-08-05 18:20


origem


Relacionado: Como listar tamanhos de arquivos recursivos de arquivos e diretórios em um diretório? - Peter Mortensen
Duplicação entre sites: Como obtenho o tamanho de um diretório na linha de comando? - Peter Mortensen


Respostas:


O comando du "resume o uso de disco de cada arquivo, recursivamente para diretórios", por exemplo,

du -hs /path/to/directory
  • -h é obter os números "legíveis por humanos", por ex. obter 140M ao invés de 143260 (tamanho em KBytes)
  • -s é para resumo (caso contrário, você terá não apenas o tamanho da pasta, mas também para tudo dentro a pasta separadamente)

Como você está usando -h você pode classificar os valores legíveis usando

du -sh | sort -h

o -h bandeira em sort levará em consideração os valores de tamanho "Human Readable".


Se quiser evitar a listagem recursiva de todos os arquivos e diretórios, você pode fornecer --max-depth parâmetro para limitar quantos itens são exibidos. Mais comumente, --max-depth=1

du -sh --max-depth=1 /path/to/directory

1090
2017-08-05 18:27



respeito para ir a milha extra. :) - myusuf3
eu uso du -sh ou DOOSH como uma maneira de lembrá-lo (NOTA: o comando é o mesmo, apenas a organização de sinalizadores de linha de comando para propósitos de memória) - Marco Ceppi♦
Existe uma opção útil para du chamado de --apparent-size. Ele pode ser usado para encontrar o tamanho real de um arquivo ou diretório (em oposição a sua pegada no disco), por exemplo, um arquivo de texto com apenas 4 caracteres ocupará cerca de 6 bytes, mas ainda aparecerá como ~ 4K em uma saída regular dush. No entanto, se você passar a opção --apparent-size, a saída será 6. man du says: - tamanhos aparentes de impressão em tamanho aparente, em vez de uso do disco; embora o tamanho aparente seja geralmente menor, pode ser maior devido a furos em arquivos "esparsos", fragmentação interna, blocos indiretos - Hopping Bunny
Isso funciona para o OS X também! Obrigado, eu estava realmente procurando uma maneira de limpar arquivos, tanto na minha máquina local quanto no meu servidor, mas os métodos automatizados pareciam não funcionar. Então eu corri du -hs * e entrei no maior diretório e descobri quais arquivos eram tão grandes ... Esse é um método tão bom, e a melhor parte é que você não precisa instalar nada! Definitivamente mereceu o meu upvote - Dev
@BandaMuhammadAlHelal Eu acho que há duas razões: arredondamento (du tem um arredondamento um pouco peculiar, não mostrando decimais se o valor tiver mais de um dígito na unidade escolhida), e o clássico Prefixo de 1024 x 1000 questão. du tem uma opção -B (ou --block-size) para alterar as unidades nas quais exibe valores, ou você pode usar -b ao invés de -h para obter o valor "bruto" em bytes. - Marcel Stimberg


Recentemente, encontrei uma ótima ferramenta interativa baseada em ncurses, que rapidamente oferece uma visão geral sobre os tamanhos dos diretórios. Procurado por esse tipo de ferramenta por anos.

  • aprofundar rapidamente a hierarquia de arquivos
  • você pode excluir por exemplo enormes arquivos temporários de dentro da ferramenta
  • Extremamente rápido

Pense nisso como baobá para a linha de comando:

apt-get install ncdu

140
2017-10-11 07:24



Isso é absolutamente fantástico! Como o DaisyDisk, para o OSX - subZero
Ferramenta incrível! - Ted
ncdu é incrível! Depois de instalá-lo, basta fazer isso ncdu /. Você encontrará rapidamente os maiores arquivos no sistema. Também pressione h enquanto dentro da interface do console do ncdu. Tem atalhos muito úteis - vlad-ardelean
Ferramenta incrível! Obrigado pelo heads up! - kstratis
Ferramenta realmente incrível e útil. Obrigado cara :) - Frank


Isso encontra o tamanho recursivamente e coloca-o ao lado do nome de cada pasta, junto com o tamanho total na parte inferior, tudo no formato humano

du -hsc *

43
2017-12-19 16:32





Apreciar!

du foldername

Mais informações sobre esse comando Aqui 


14
2017-08-05 18:22





tree é outro comando útil para este trabalho:

Basta instalá-lo via sudo apt-get install tree e digite o seguinte:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

A partir de árvore do homem:

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)

7
2018-01-27 12:37





Abaixo está o que estou usando para imprimir o total, a pasta e o tamanho do arquivo:

$ du -sch /home/vivek/* | sort -rh

Detalhes

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Saída

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

5
2017-10-06 14:05





As respostas tornaram óbvio que du é a ferramenta para encontrar o tamanho total de um diretório. No entanto, existem alguns fatores a serem considerados:

  • Ocasionalmente, du A saída pode ser enganosa, pois reporta o espaço alocado pelo sistema de arquivos, que pode ser diferente da soma dos tamanhos dos arquivos individuais. Normalmente, o sistema de arquivos irá alocar 4096 bytes para um arquivo, mesmo que você tenha armazenado apenas um caractere nele!

  • Diferenças de saída devido à potência de 2 e potência de 10 unidades. o -h troque para du divide o número de bytes por 2 ^ 10 (1024), 2 ^ 20 (1048576) etc para fornecer uma saída legível. Muitas pessoas podem estar mais habituadas a ver potências de 10 (por exemplo, 1K = 1000, 1M = 1000000) e se surpreender com o resultado.

Para encontrar a soma total de tamanhos de todos os arquivos em um diretório, em bytes, faça:

find <dir> -ls | awk '{sum += $7} END {print sum}'

Exemplo:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

3
2018-02-04 18:56



O find-ls-awk retornará um valor incorreto para pastas grandes # 1. Para o awk mais recente, você pode adicionar --bignum ou -M ; se isso não é uma opção use find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc  # 2. - goozez
Se potências de 2 sendo usadas é um problema, há o --si opção: "como -h, mas use poderes de 1000 não 1024" - muru


Para apenas o tamanho do diretório em um formato legível, use o abaixo:

du -hs directoryname

Isso provavelmente não está na seção correta, mas a partir da linha de comando, você pode tentar:

ls -sh filename

o -sé tamanho, e o -h é legível por humanos.

Usar -l para mostrar ls lista, como abaixo:

ls -shl

1
2018-05-12 09:09





du /foldername é o comando padrão para saber o tamanho de uma pasta. A melhor prática é encontrar as opções lendo a man page:

man du

Você deve ler a página do manual (disponível conectados) antes de usar o comando.


0
2017-12-05 09:17





Aqui está um script POSIX que irá trabalhar com:

  • Um arquivo
  • arquivos
  • Um diretório
  • Diretórios
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Fonte


0
2018-03-27 11:48





O melhor que eu acho é o seguinte:

du -h directory_name | tail -n1

Isso mostrará apenas o tamanho do diretório em que você está interessado e não imprimirá os tamanhos dos diretórios e arquivos dentro desse diretório.

Devo acrescentar que, se o tamanho da pasta for grande, a duração do espaço será maior. Você deve ser paciente para que este comando funcione. Assim como qualquer outro comando unix, você pode descobrir o tempo total para esse processo usando time antes deste comando:

time du -h directory_name | tail -n1

-2
2017-12-19 06:35



du tem uma opção para isso: -s - muru