AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1224
Accepted
David Barry
David Barry
Asked: 2010-08-06 10:20:23 +0800 CST2010-08-06 10:20:23 +0800 CST 2010-08-06 10:20:23 +0800 CST

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

  • 772

Existe um comando simples para exibir o tamanho total 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.
filesystem command-line
  • 13 13 respostas
  • 1446713 Views

13 respostas

  • Voted
  1. Best Answer
    Marcel Stimberg
    2010-08-06T10:27:35+08:002010-08-06T10:27:35+08:00

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

    du -hs /path/to/directory
    
    • -hé obter os números "legíveis para humanos", por exemplo, obter 140Mem 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 separadamente)

    Conforme você está usando -h, você pode classificar os valores legíveis por humanos usando

    du -h | sort -h
    

    O -hsinalizador em sortirá considerar os valores de tamanho "Human Readable".


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

    du -h --max-depth=1 /path/to/directory
    
    • 1765
  2. geekQ
    2012-10-11T23:24:38+08:002012-10-11T23:24:38+08:00

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

    • faça uma busca rápida pela hierarquia de arquivos
    • você pode excluir, por exemplo, arquivos temporários enormes de dentro da ferramenta
    • Extremamente rápido

    Pense nisso como baobá para a linha de comando:

    apt-get install ncdu
    
    • 221
  3. Brad
    2014-12-20T08:32:21+08:002014-12-20T08:32:21+08:00

    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 *
    
    • 84
  4. myusuf3
    2010-08-06T10:22:53+08:002010-08-06T10:22:53+08:00

    Apreciar!

    du foldername
    

    Mais informações sobre esse comando aqui

    • 20
  5. vivekyad4v
    2016-10-07T06:05:49+08:002016-10-07T06:05:49+08:00

    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
    

    Resultado

     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
    
    • 19
  6. αғsнιη
    2015-01-28T04:37:49+08:002015-01-28T04:37:49+08:00

    treeé outro comando útil para este trabalho:

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

    tree --du -h /path/to/directory
    ...
    ...
    
    33.7M used in 0 directories, 25 files
    

    Da á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.)
    
    • 16
  7. pdp
    2016-02-05T10:56:45+08:002016-02-05T10:56:45+08:00

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

    • Ocasionalmente, dua saída pode ser enganosa 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 alocará 4096 bytes para um arquivo, mesmo que você armazene apenas um caractere nele!

    • Diferenças de saída devido à potência de 2 e potência de 10 unidades. A -hopção para dudivide o número de bytes por 2^10 (1024), 2^20 (1048576) etc para fornecer uma saída legível por humanos. Muitas pessoas podem estar mais acostumadas a ver potências de 10 (por exemplo, 1K = 1.000, 1M = 1.000.000) 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 += $7} END {print sum}'
    

    Exemplo:

    $ du -s -B 1
    255729664
    
    $ find .  -ls | awk '{sum += $7} END {print sum}'
    249008169
    
    • 5
  8. Zombo
    2017-03-28T03:48:15+08:002017-03-28T03:48:15+08:00

    Você pode usar a ferramenta Poeira:

    PS C:\git> dust
       0B       ┌── templates           │                                      █ │   0%
       0B     ┌─┴ git-core              │                                      █ │   0%
       0B   ┌─┴ share                   │                                      █ │   0%
      76B   ├── readme.md               │                                      █ │   0%
     156K   │   ┌── less.exe            │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ │   2%
     2.7M   │   ├── git-remote-https.exe│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█████████████████ │  42%
     3.6M   │   ├── git.exe             │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████████████████████ │  56%
     6.5M   │ ┌─┴ git-core              │███████████████████████████████████████ │ 100%
     6.5M   ├─┴ libexec                 │███████████████████████████████████████ │ 100%
     6.5M ┌─┴ .                         │███████████████████████████████████████ │ 100%
    

    Meu exemplo é do Windows, mas Linux e Apple também são suportados:

    https://github.com/bootandy/dust

    • 4
  9. qwr
    2021-02-22T22:44:26+08:002021-02-22T22:44:26+08:00

    Para ver os tamanhos de todos os arquivos e diretórios, use

    du -had1 dir/
    

    (talvez como "você tinha 1")

    • -h: tamanhos legíveis por humanos
    • -a: mostra arquivos, não apenas diretórios
    • -d1: mostra os totais apenas na profundidade 1, ou seja, o conteúdo do diretório atual

    Para o diretório atual, o argumento do diretório pode ser deixado de lado.

    du -sh dir/*tem o mesmo efeito, mas não mostra arquivos e diretórios ocultos devido ao shell globbing.

    • 3
  10. WinEunuuchs2Unix
    2021-03-04T13:45:02+08:002021-03-04T13:45:02+08:00

    Estou condicionado ao llcomando que é alias para ls -alF. Falta apenas uma contagem de arquivos e o tamanho dos arquivos na parte inferior. Joguei com due treemas não consegui os totais que precisava. Então eu criei lllpara fazer isso por mim.

    No seu ~/.bashrclugar o seguinte:

    lll () {
        ls -alF "$@"
        arr=($(ls -alF "$@" | awk '{TOTAL+=$5} END {print NR, TOTAL}'))
        printf " \33[1;31m ${arr[0]}\33[m line(s).  "
        printf "Total size: \33[1;31m ${arr[1]}\33[m\n"
    #    printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
    }
    

    Salve o arquivo e use-o como recurso . ~/.bashrc(ou você pode reiniciar seu terminal).


    Saída de amostra

    O bom llda saída são as cores. Isso é mantido com lll, mas perdido ao usar findou du:

    lll exemplo de saída.png


    TL;DR

    Uma função de bônus que você pode adicionar ~/.bashrcé chamada BytesToHuman(). Isso faz o que a maioria dos usuários de console esperaria converter grandes números para MiB, GiB, etc:

    function BytesToHuman() {
    
        # https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254
    
        read StdIn
    
        b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)
        while ((b > 1024)); do
            d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
            b=$((b / 1024))
            let s++
        done
        echo "$b$d ${S[$s]}"
    
    } # BytesToHuman ()
    

    Em seguida, vire o comentário entre duas linhas na lll ()função para ficar assim:

    #    printf "Total size: \33[1;31m ${arr[1]}\33[m\n"
        printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
    

    Agora sua saída fica assim:

    lll saída de amostra 2.png

    Como sempre, não se esqueça de fornecer recursos sempre que fizer . ~/.bashrcalterações. (Ou reinicie o terminal, é claro)

    PS - Duas semanas em auto-quarentena finalmente me deram tempo para trabalhar neste objetivo de cinco anos.

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como adicionar um diretório ao PATH?

    • 17 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Marko Smith

    Como faço para obter a temperatura da CPU?

    • 21 respostas
  • Marko Smith

    Como posso adicionar um usuário como um novo sudoer usando a linha de comando?

    • 7 respostas
  • Marko Smith

    Alterar permissões e propriedade da pasta

    • 9 respostas
  • Marko Smith

    Como você reinicia o Apache?

    • 13 respostas
  • Marko Smith

    Como posso desinstalar o software?

    • 11 respostas
  • Marko Smith

    Como os PPAs podem ser removidos?

    • 26 respostas
  • Martin Hope
    justingrif Como adicionar um diretório ao PATH? 2009-07-23 12:42:23 +0800 CST
  • Martin Hope
    NES Como habilitar ou desabilitar serviços? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    Olivier Lalonde Como manter os processos em execução após encerrar a sessão ssh? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B Como posso adicionar um usuário como um novo sudoer usando a linha de comando? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans Como removo versões antigas do kernel para limpar o menu de inicialização? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve