O comando du não analisa diretórios ocultos


25

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 de manual do du, não há informações sobre isso. Como calcular a quantidade de espaço em disco usada pelos diretórios, incluindo os arquivos ocultos.

Respostas:


13

Na verdade, aqui está a prova:

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

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

Você está usando du *?


3
+1 para... you maybe using "du *" ?
veja

2
Eu não estou usando "du *". Esqueci de mencionar na pergunta que eu preciso do resumo total do resumo. portanto, se eu usar ambos -a e -s como no du -as, recebo uma mensagem de erro dizendo "du: não é possível resumir e mostrar todas as entradas". Esta é uma questão. A outra coisa é que, mesmo com du -ai, vejo apenas os arquivos de primeiro nível. ou seja, incapaz de ver arquivos dentro de diretórios ocultos.
Talespin_Kit

11
Acabei de adicionar -a para mostrar todos os arquivos sendo contados, apenas não adicione esse sinalizador, ele afeta apenas a exibição, não os totais. Eu mostrei a você um contra-exemplo de que diretórios ocultos são contados.
Stivlo # 3/11

11
agora eu encontrei o problema. O problema era que o diretório oculto era um link simbólico, então tive que usar "du -Lsh dir_name". Obrigado.
Talespin_Kit

11
ah, estou contente que você o tenha encontrado, um brinde.
Stivlo # 3/11

53

Este comando mostra o tamanho resumido dos diretórios ocultos

du -hs .[^.]*


11
Este é exatamente o que eu estava procurando, obrigado :)
Nikana Reklawyks

esta é a solução correta
3pns

seria incrível se você pudesse explicar um pouco a mágica por trás disso. ajudaria a formar uma resposta que incluísse arquivos e diretórios ocultos e não ocultos.
kumetix 5/11

13

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

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

du -hs .* *, conforme 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 duse comporta assim? Porque você usa -sque resumem o resultado e que todos os arquivos e subdiretórios são filhos de .modo du -hsnão enumerá-los!


11

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

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


11
Edite sua resposta para indicar por que você acredita que o ncdu é "muito melhor". A página vinculada realmente não diz nada sobre isso, exceto que é uma versão baseada em ncurses du. Além de um método de exibição mais sofisticado, não há indicação óbvia de qualquer diferença funcional.
precisa saber é o seguinte

Acho que a capacidade de ajustar dinamicamente sua consulta é um grande benefício. Eu posso rodar o ncdu em ~, aprender quais diretórios estão usando mais espaço e depois mergulhar diretamente neles. Também fornece a dligação para excluir diretórios, para que você possa limpar diretamente da interface.
user88974

5

Faz e não faz. Exemplo:

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

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

no diretório do usuário: (enorme 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 desce para subdiretórios, mas no diretório atual o * simplesmente não corresponde ao padrão .directory_name, portanto os elementos ocultos do diretório atual serão omitidos.

Levei algum tempo para descobrir, e como shadyabhi recomenda, seria óbvio se eu tivesse usado o ncdu.


1

O comando correto é: du -hs .* *


Algumas informações adicionais tornariam essa uma resposta aceitável.
Ramhound 23/09

1

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

Isso lhe dá:

  • Tamanho dos arquivos / diretórios ocultos
  • Tamanho de 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 disso um alias no meu ~/.bash_aliasesarquivo.

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

Agora posso apenas executar bigpara encontrar os maiores diretórios em um diretório e sbigquando preciso de permissões sudo.


0
du -ahd1 | sort -hr | head -10

A seguir está a descrição da -dopção em du --help:

-d, --max-depth = N imprime o total de um diretório (ou arquivo, com --all) somente se houver N ou menos níveis abaixo do argumento da linha de comando; --max-depth = 0 é o mesmo que --summarize


Embora isso possa ajudar a resolver o problema, não explica por que e / ou como ele resolve o problema. Fornecer esse contexto adicional melhoraria significativamente seu valor educacional a longo prazo. Edite sua resposta para adicionar uma explicação, incluindo quais limitações e suposições se aplicam. Obrigado.
fixer1234

0

Este comando ajudará você a verificar o uso do disco no diretório e executar o seguinte.
"du -sch. [!.] * * | sort -h"

Aqui está a demonstração de como calcular o uso do disco de um diretório específico. Criei um diretório chamado Du_sh e criei dois arquivos (um oculto de 10 MB e um normal de 20 MB).

nikhil@debian:~$ mkdir Du_sh nikhil@debian:~$ cd Du_sh/ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s nikhil@debian:~/Du_sh$ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240 10240+0 records in 10240+0 records out 20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s nikhil@debian:~/Du_sh$ du -sch .[!.]* * 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.