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

663

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 isso 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.
por David Barry 05.08.2010 / 20:20

11 respostas

1041

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. obtenha 140M em vez de 143260 (tamanho em KBytes)
  • -s é para resumo (caso contrário, você obterá não apenas o tamanho da pasta, mas também tudo na pasta )

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

du -sh | sort -h

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

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

du -sh --max-depth=1 /path/to/directory
    
por Marcel Stimberg 05.08.2010 / 20:27
136

Recentemente, encontrei uma ótima ferramenta interativa baseada em ncurses, que fornece rapidamente uma visão geral sobre os tamanhos de diretório. Procurei por esse tipo de ferramenta por anos.

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

Pense nisso como baobab para a linha de comando:

apt-get install ncdu
    
por geekQ 11.10.2012 / 09:24
40

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

du -hsc *
    
por Brad 19.12.2014 / 17:32
14

Aproveite!

du foldername

Mais informações sobre esse comando aqui

    
por myusuf3 05.08.2010 / 20:22
6

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

De árvore de 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.)
    
por αғsнιη 27.01.2015 / 13:37
5

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
    
por vivekyad4v 06.10.2016 / 16:05
3

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 output pode ser enganoso porque relata 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!

  • Diferenças de saída devido à potência de 2 e potência de 10 unidades. A opção -h para du divide o número de bytes em 2 ^ 10 (1024), 2 ^ 20 (1048576) etc para fornecer uma saída legível por humanos. 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 dos tamanhos de todos os arquivos em um diretório, em bytes, faça:

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

Exemplo:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += } END {print sum}'
249008169
    
por pdp 04.02.2016 / 19:56
1

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

du -hs directoryname

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

ls -sh filename

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

Use -l para mostrar na lista ls , como abaixo:

ls -shl
    
por Shiv Singh 12.05.2016 / 11:09
0

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 man (disponível online ) antes de usar o comando.

    
por Balaswamy vaddeman 05.12.2011 / 10:17
0

Aqui está um script POSIX que funcionará com:

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

Origem

    
por Steven Penny 27.03.2017 / 13:48
-2

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 este processo usando time antes deste comando:

time du -h directory_name | tail -n1
    
por Peaceful 19.12.2014 / 07:35