Listar os tamanhos atuais das pastas com o terminal?

134

Quero uma lista das pastas do diretório atual ou que especifique com seu tamanho.

Eu tentei com o du, mas só obtenho o tamanho dos diretórios que especifico (du. ./F1) e ls não mostra o tamanho das pastas.

Como faço isso sem nenhum script?

Kevin
fonte
para não soar como um idiota, mas 'man du';)
Jakub
5
Obrigado ;-) mas eu já tentei e não consegui encontrar nada. E tente Googling du!
kevin

Respostas:

212

Se você deseja mostrar todos os diretórios no diretório atual:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Para mostrá-los iniciando em outro diretório:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Se você deseja garantir que os diretórios com nomes começando com um ponto sejam incluídos, faça shopt -s dotglobprimeiro.

Dennis Williamson
fonte
Obrigado a todas as ótimas respostas, mas esta é a mais simples. Esqueci o final / nos meus testes.
kevin
1
Onde -s meios resumir, exibir o total e -h significa legível
wranvaud
2
Classificar as pastas por tamanho: du -s */ | sort -n.
Anton Tarasenko
1
@AntonTarasenko: tamanhos legíveis Ordenar humanos
Dennis Williamson
1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson
18

Em um Mac, a opção --max-depth é suplantada por -d [depth]. Portanto, para ver uma lista legível por humanos da sua unidade raiz mais 2 níveis, use o seguinte:

du -hd 2 /* 

Nota: este comando irá expor os dois principais níveis de diretório da sua raiz. Isso inclui atravessar um nível em seus Volumes e listará os tamanhos de resumo de cada diretório de nível superior em cada um dos volumes anexados. Dependendo do que você anexou, esse comando pode levar algum tempo para ser concluído.

jadik
fonte
13

Outra abordagem é a opção --max-depth.

du -h --max-depth=1 .

Irá listar todos os diretórios e arquivos na pasta atual com o tamanho.

A profundidade 2 listaria mais um nível de pastas.

matthias krull
fonte
4
No Mac, é du -hd 2 .para 2 níveis de profundidade.
Ryan
Ah sim. E provavelmente no FreeBSD também. Obrigado pela informação.
Matthias krull
5

Experimentar:

$ du -s ./f1

ou

$ du -sh ./f1

para tamanhos legíveis mais amigáveis.

Doug Harris
fonte
2

$ du --max-depth=1 /var/www/ | sort -n -r

Andre Mesquita
fonte
3
Ao adicionar uma resposta a uma pergunta mais antiga com respostas existentes, é uma boa prática explicar como sua resposta é diferente e incluir alguma explicação para que não seja apenas uma resposta de comando.
Jason Aller
3
Você pode expandir sua resposta para explicar o que os parâmetros fazem?
fixer1234
2

Vale mencionar o comando shell NCurses Disk Usage .

Ncdu é um analisador de uso de disco com uma interface ncurses. Ele foi projetado para encontrar porcos espaciais em um servidor remoto, onde você não tem uma configuração gráfica completa disponível, mas é uma ferramenta útil, mesmo em sistemas de desktop comuns. O Ncdu pretende ser rápido, simples e fácil de usar, e deve poder rodar em qualquer ambiente mínimo do tipo POSIX com o ncurses instalado.

Raio
fonte
2

Com base na resposta aceita, este comando mostrará os tamanhos das pastas no diretório e também as listará por tamanho para você interpretar com mais facilidade:

$ du -sh */ | sort -rn
Ethan
fonte
1

No Mac, você pode instalar a implementação GNU (Linux) do duHomebrew ( brew install coreutils). Então, por exemplo:

gdu folder -shL --exclude=.git

Onde

  • gdué o nome dado à implementação do GNU du(por padrão, o Homebrew não oculta /usr/bin/du);
  • s produz um total geral para a pasta especificada (omita se você deseja ver a discriminação);
  • h produz tamanhos legíveis por humanos;
  • L segue links simbólicos;
  • --exclude=.git exclui o diretório git dentro da pasta especificada (este é apenas um exemplo).

Você pode ignorar mais pastas adicionando --exclude=blah. Você também pode especificar várias pastas ao mesmo tempo (ou seja gdu folder1 folder2 ...), e, nesse caso, você pode combinar todos os subtotais em um único tamanho usando a opção c.

Sheljohn
fonte
1

Aqui está um script POSIX que funcionará com:

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

Fonte

Steven Penny
fonte