Como listar tamanhos de arquivos recursivos de arquivos e diretórios em um diretório?

50

Como faço para listar todos os arquivos em um diretório e seus tamanhos recursivos?

---editar

Eu quero ver os tamanhos 'acumulados' para os diretórios pai no diretório listado. Eu não quero ver os diretórios filhos ou seu conteúdo ou tamanho.

Hawkeye
fonte
11
Você quer dizer que deseja ver o tamanho total (soma) de todos os arquivos em uma pasta, como clicar com o botão direito do mouse em uma pasta na área de trabalho e selecionar 'propriedades'?
Pavlos G.
Você está procurando por um software que o ajude a encontrar arquivos grandes ou algo para obter uma árvore de arquivos (recolhível)?
Lekensteyn
Oi @Pavlos G - Quero dizer a soma de cada um dos diretórios no diretório em que estou atualmente - não a soma do diretório geral.
hawkeye
@JG - Verifique minha atualização ;-)
Pavlos G.

Respostas:

53

Eu acho que a maneira mais fácil é digitando ls -l, ou ls -lhque fornecerá o tamanho do arquivo em formato legível por humanos (KB, MB, etc).

Se 'recursivamente' significa listar todas as pastas subseqüentes, por exemplo:

/ foo /
/ foo / bar / ....

Então você também deve adicionar parâmetros R, como ls -lRouls -lhR

Mais informações lspodem ser encontradas digitandoman ls

Atualizar:

O seguinte comando proposto por Lekensteyn provavelmente fará o trabalho:

du -h --max-depth=1 <folder>

-hé legível por humanos
--apparent-sizeé outra maneira de exibir tamanhos, como já indicado,
--max-depthé o nível de subpastas que você deseja reduzir.

Pavlos G.
fonte
O que usar para a profundidade máxima? -1?
dylanh724
61
apt-get install ncdu

insira a descrição da imagem aqui

Também é interativo, portanto, se você quiser verificar uma subpasta, basta UP, DOWN e Enter.

ihashacks
fonte
É mesmo o que eu procurava. Muito obrigado!
Mathlight 6/09/16
Talvez a incrível recomendação mais software que eu já tenho
SomethingSomething
esta deve ser a resposta aprovada
dvdmn 29/04
30

Para obter o tamanho total de um diretório e todos os filhos

du -hs directory/*
Richard Holloway
fonte
Eu gostaria do próximo nível abaixo disso - os tamanhos recursivos de todas as crianças do primeiro nível.
hawkeye
11
Vou editar minha resposta. Você precisa usar o diretório du -h / *
Richard Holloway
17

Também confira tree. Não está instalado por padrão, mas são os repositórios.

Exemplo:

richard@legend:~$ tree Applications/ -s
Applications/
├── [           4096]  AlexFTPS-1.0.2
│   ├── [      31232]  AlexPilotti.FTPS.Client.dll
│   ├── [     274432]  C5.dll
│   ├── [       1457]  C5-License
│   ├── [      35147]  COPYING
│   ├── [       7639]  COPYING.LESSER
│   ├── [         70]  ftps
│   ├── [      28672]  ftps.exe
│   ├── [      98304]  Plossum CommandLine.dll
│   ├── [       1557]  Plossum-License
│   └── [       2560]  README
└── [           4096]  src
    └── [     180849]  AlexFTPS_bin_1.0.2.zip

Mais opções podem ser encontradas na página do manual.

Richard Holloway
fonte
Os tamanhos devem ser mostrados?
hawkeye
JG: O -s mostra os tamanhos.
Richard Holloway
11
Mostra o tamanho do registro do diretório em vez do tamanho completo do diretório.
Steven Lu
-hmostrar o tamanho de maneira legível por humanos, por exemplotree -s
Eric Wang
15

Como você não menciona especificamente que precisa de uma solução baseada em terminal, acho que o baobab, também conhecido como Disk Usage Analyzer, está ausente na lista.

Ele é instalado no Ubuntu por padrão e faz exatamente o que você deseja em uma interface gráfica agradável, com a capacidade de detalhar a hierarquia de diretórios.

Além de exibir uma lista de diretórios com seus tamanhos, também está mostrando um gráfico de anéis ou de mapa de árvore do uso do sistema de arquivos, que é extremamente útil para visualizar os diretórios que ocupam mais espaço.

baobab o Analisador de Uso de Disco

Sergey
fonte
7

Uma solução de terminal é o ducomando:

du --all --human-readable --apparent-size

(abreviada: du -ah --apparent-size)

duexibe o uso do disco para cada arquivo e diretório. As opções explicadas:

  • --all, -a- mostra tamanhos para arquivos também, não apenas diretórios
  • --human-readable, -h- mostra tamanhos em um formato legível por humanos, por exemplo 10K(10 kilobytes), 10(10 bytes)
  • --apparent-size - mostre o tamanho real do arquivo, não os tamanhos usados ​​pelo disco.
Lekensteyn
fonte
Eu só queria que as crianças de primeiro nível
hawkeye
2
@hawkeye para o 1º nível, você pode usar--max-depth=1
nikoskip
4
@nikoskip nice tip! Também é bom saber é a abreviação, --max-depth=1pode ser abreviada para -d1.
Lekensteyn
como obter tudo isso em uma ordem decending de tamanho ..
Krazzy R
como faço para visualizar o conteúdo e esvaziar: / dev / sda5 ext4 430g 381G 27G 94% / meu laptop é menos de 1 mês de idade e é tão completo que não faz sentido
Krazzy R
2

Isso parece funcionar quando os links simbólicos estão envolvidos.

ls -LRlh
Mulki
fonte
A resposta dada não me forneceu detalhes para os links simbólicos (ls -lhR), mas os números listados ao lado também não correspondiam ao tamanho correto de cada um dos valores. Minha resposta me deu uma hierarquia com uma estrutura de árvore definida e a resposta correta .... OU você está se referindo a alguma outra resposta votada?
quer
O voto negativo foi retirado, com voto positivo. Por favor, edite e coloque o comentário na resposta ... Obrigado pela explicação. ;-)
Fabby
1

Para obter uma lista classificada, coloque tudo em MB e classifique:

du -m * | sort -n

Ou use uma ferramenta como DiskReport para gerar um relatório da árvore completa do disco.

Erwan
fonte
1

Outra solução de terminal com finde classificação (por tamanho de arquivo, coluna 1)

$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1                              
178 ./somefile.txt
219 ./somefile2.txt
4096 ./c
4096 ./cs2
4096 ./perl
4096 ./python
4096 ./random
4096 ./sh
Sergiy Kolodyazhnyy
fonte
Isso não mostra o tamanho do diretório.
Muru