du comando não analisa diretórios ocultos

19

Eu quero estimar a quantidade de espaço em disco usada por um diretório usando o seguinte comando.

du -sh dir_name

que não calcula os diretórios ocultos. Na página man do du não há informações sobre isso. Como calcular a quantidade de espaço em disco usado pelos diretórios, incluindo os arquivos ocultos.

    
por Talespin_Kit 03.10.2011 / 13:24

7 respostas

10

Na verdade, aqui está a prova:

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

A opção -a é usada para mostrar explicitamente quais arquivos foram contados.

Você está usando du * ?

    
por 03.10.2011 / 13:31
40

Este comando mostra o tamanho resumido dos diretórios ocultos

du -hs .[^.]*

    
por 19.08.2013 / 19:53
11

FYI, para estimar o tamanho ocupado por vários diretórios, é muito melhor usar ncdu

Você pode navegar na GUI ncurses entre vários diretórios e mostrará o tamanho de cada diretório. Se eu estou usando du, eu teria que executar du comando para cada diretório que eu quero verificar, o que pode ser complicado. Você pode ordenar os diretórios de acordo com o tamanho ocupado também na GUI ncurses.

    
por 04.10.2011 / 09:02
9

O comando correto é: du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* * , como mencionado em outra resposta, não está correto se você deseja listar todos os arquivos e subdiretórios (incluindo os ocultos).

Exemplo:

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

Por que o du se comporta assim? Porque você usa -s que resumem o resultado e que todos os arquivos e subdiretórios são filhos de . então du -hs não os lista!

    
por 24.01.2015 / 08:20
4

Ele faz e não faz. Exemplo:

No diretório inicial: (apenas um usuário existe)

du -sh /home/*
2.6G    /home/user

no diretório do usuário: (grande diferença entre as somas)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

e o motivo é:

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du calculará diretórios ocultos enquanto estiver descendo em subdiretórios, mas no diretório atual o * simplesmente não corresponde ao padrão .directory_name para que os elementos ocultos do diretório atual sejam omitidos.

Demorei algum tempo para descobrir e, como Shadyabhi recomenda, teria sido óbvio se eu tivesse usado o ncdu.

    
por 14.03.2013 / 19:24
1

O comando correto é: du -hs .* *

    
por 23.09.2014 / 13:16
1

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

Isso lhe dá:

  • Tamanho de arquivos / diretórios ocultos
  • Tamanho dos arquivos / diretórios não ocultos
  • Tamanho total geral do diretório atual

Ele também classifica a saída para facilitar a visualização do que é maior. Eu também fiz isso um alias no meu arquivo ~/.bash_aliases .

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

Agora, posso executar apenas big para encontrar os maiores diretórios em um diretório e sbig quando precisar de permissões sudo.

    
por 24.04.2017 / 22:03

Tags