É possível usar ls
no Unix para listar o tamanho total de um subdiretório e todo o seu conteúdo, em oposição ao habitual 4K
que (presumo) seja apenas o próprio arquivo de diretório?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
Depois de vasculhar as páginas de manual, estou ficando vazio.
alias ducks='du -cksh * | sort -hr | head -n 15'
Respostas:
Tente algo como:
versão curta de:
Explicação:
du
: D isk U sage-s
: Exibe um resumo para cada arquivo especificado. (Equivalente a-d 0
)-h
: Saída "legível por humanos". Utilização sufixos unidade: B YTE, K ibibyte (KiB), H ebibyte (MIB), L ibibyte (GIB), T ebibyte (TiB) e P ebibyte (PIB). (BASE2)fonte
*(D)
que correspondem ocultas ( d arquivos OT) junto com arquivos normais. Ao usar o bash, você pode usar* .[!.]*
para combinar os dois.du -sch * .[!.]* | sort -rh
é grande (mostrar uma saída ordenada) no Mac fazer:brew install coreutils
e depoisdu -sch * .[!.]* | gsort -rh
du -sk * | sort -n
ordenará as pastas por tamanho. Útil ao procurar espaço livre ..fonte
| tail -r
para classificar primeiro pelo maior.sort -rn
classifica as coisas em ordem numérica inversa.sort -rn | head -n 10
mostrará apenas os primeiros, se isso for de seu interesse.sort -rh
funcionará bem comdu -cksh *
a classificação de unidades legíveis por humanos.du -ksh | sort -rn
é o mesmo quedu -cksh | sort -rn
. Assim comodu -ksh
é o mesmo quedu -cksh
.Isso será exibido em formato legível por humanos.
fonte
sort -h
aqui: gnu.org/software/coreutils/manual/... É especialmente lá para classificar103K
,102M
,1.1G
etc. Isso deve estar disponível em um monte de sistemas de hoje em dia, mas não todos.du -sh * | sort -rh
(-r para listar pastas maiores primeiro)du -sh $(ls -A) | sort -h
Para listar os maiores diretórios do diretório atual no formato legível por humanos:
du -sh * | sort -hr
Uma maneira melhor de restringir o número de linhas pode ser
du -sh * | sort -hr | head -n10
Onde você pode aumentar o sufixo do
-n
sinalizador para restringir o número de linhas listadasAmostra:
Torna mais conveniente a leitura :)
fonte
Para exibi-lo em
ls -lh
formato, use:O código awk explicou:
Saída de amostra:
fonte
--color=no
sort --key=5,5h
para classificar 'unidades legíveis' de quinta colunasort: stray character in field spec: invalid field specification
5,5h ''. Eu realmente odeio macs às vezes = \O comando que você deseja é 'du -sk' du = "uso do disco"
O sinalizador -k fornece saída em kilobytes, em vez do padrão dos setores do disco (blocos de 512 bytes).
O sinalizador -s listará apenas as coisas no diretório de nível superior (por exemplo, o diretório atual, por padrão, ou o diretório especificado na linha de comando). É estranho que du tenha o comportamento oposto de ls nesse sentido. Por padrão, du fornecerá recursivamente o uso do disco de cada subdiretório. Por outro lado, ls fornecerá apenas arquivos de lista no diretório especificado. (ls -R fornece um comportamento recursivo.)
fonte
Coloque esta declaração da função shell nos scripts de inicialização do shell:
Eu chamei
duls
porque mostra a saída de ambosdu
els
(nessa ordem):Explicação:
O
paste
utilitário cria colunas a partir de sua entrada de acordo com a especificação que você fornece. Dados dois arquivos de entrada, os coloca lado a lado, com uma guia como separador.Damos a saída
du -hs -- "$@" | cut -f1
como o primeiro arquivo (realmente o fluxo de entrada) e a saídals -ld -- "$@"
como o segundo arquivo.Na função,
"$@"
será avaliada a lista de todos os argumentos da linha de comando, cada um entre aspas duplas. Portanto, ele entenderá caracteres brilhantes e nomes de caminhos com espaços etc.O duplo menos (
--
) sinaliza o final das opções da linha de comando paradu
els
. Sem isso, dizerduls -l
confundiriadu
e qualquer opção paradu
issols
não confundirials
(e as opções que existem nos dois utilitários podem não significar a mesma coisa, e seria uma bagunça).O
cut
depoisdu
simplesmente corta a primeira coluna dadu -hs
saída (os tamanhos).Decidi colocar a
du
saída à esquerda, caso contrário eu teria que gerenciar uma coluna oscilante da direita (devido aos comprimentos variáveis dos nomes dos arquivos).O comando não aceita sinalizadores de linha de comando.
Isso foi testado em ambos
bash
e emksh93
. Não vai funcionar com/bin/sh
.fonte
Eu sempre uso
du -sk
(-k
sinalizador mostrando o tamanho do arquivo em kilobytes).fonte
fonte
ncdu
maldiçõesdu
Este incrível utilitário CLI permite encontrar facilmente grandes arquivos e diretórios interativamente.
Por exemplo, de dentro da árvore de um projeto conhecido , fazemos:
O resultado é:
Então, eu entro no teclado e à direita no teclado para ir para a
/drivers
pasta e vejo:ncdu
só calcula o tamanho do arquivo recursivamente uma vez na inicialização de toda a árvore, tornando-o eficiente."Uso total do disco" vs "Tamanho aparente" é análogo
du
e expliquei-o em: por que a saída do `du` geralmente é tão diferente do` du -b`Página inicial do projeto: https://dev.yorhel.nl/ncdu
Perguntas relacionadas:
Testado no Ubuntu 16.04.
ncdu
uso não interativoOutro recurso interessante
ncdu
é que você pode primeiro despejar os tamanhos em um formato JSON e depois reutilizá-los.Por exemplo, para gerar o arquivo, execute:
e, em seguida, examine-o interativamente com:
Isso é muito útil se você estiver lidando com um sistema de arquivos muito grande e lento como o NFS.
Dessa forma, você pode exportar primeiro apenas uma vez, o que pode levar horas, e depois explorar os arquivos, sair, explorar novamente etc.
O formato de saída é apenas JSON, portanto, é fácil reutilizá-lo com outros programas, por exemplo:
revela uma estrutura de dados simples da árvore de diretórios:
Testado no Ubuntu 18.04.
fonte
du -sch * no mesmo diretório.
fonte
Este é um que eu gosto
atualizar : Eu não gostei do anterior porque não mostrava arquivos no diretório atual, apenas listava os diretórios.
Exemplo de saída para
/var
no ubuntu:sudo du -hDaxd1 /var | sort -h | tail -n10
fonte
Essas são ótimas sugestões, mas a que eu uso é:
-ksh
garante que os arquivos e pastas estejam listados em um formato legível por humanos e em megabytes, kilobytes, etc. Em seguida, você os classifica numericamente e inverte o tipo, para colocar os maiores em primeiro lugar.A única desvantagem desse comando é que o computador não sabe que o Gigabyte é maior que o Megabyte; portanto, ele classificará apenas por números e, com frequência, você encontrará listagens como esta:
Apenas tenha cuidado ao olhar para a unidade.
Este comando também funciona no Mac (enquanto
sort -h
que não funciona, por exemplo).fonte
-h
bandeira dodu
comando, você cortará essa desvantagem-h
vez de-n
ordenar também.O du tem outra opção útil:
-S, --separate-dirs
dizer ao du não incluir o tamanho dos subdiretórios - útil em algumas ocasiões.Exemplo 1 - mostra apenas os tamanhos de arquivo em um diretório:
Exemplo 2 - mostra os tamanhos e subdiretórios do arquivo no diretório:
fonte
du -sm * | sort -nr
Saída por tamanho
fonte
olhe o
du
comando para issofonte
apenas um aviso, se você quiser comparar tamanhos de arquivos. du produz resultados diferentes dependendo do sistema de arquivos, tamanho do bloco, ....
Pode acontecer que o tamanho dos arquivos seja diferente, por exemplo, comparando o mesmo diretório no disco rígido local e em um dispositivo de armazenamento em massa USB. Eu uso o seguinte script, incluindo ls para resumir o tamanho do diretório. O resultado é em bytes, considerando todos os subdiretórios.
fonte
Para exibir os tamanhos de arquivos e subdiretórios do diretório atual recursivamente:
Para exibir as mesmas informações de tamanho, mas sem imprimir seus subdiretórios recursivamente (que pode ser uma lista enorme), basta usar a opção --max-depth :
fonte
Por um tempo, usei o Nautilus (na área de trabalho do Gnome no RHEL 6.0) para excluir arquivos da minha pasta pessoal em vez de usar o
rm
comando bash. Como resultado, o tamanho total mostrado pornão correspondia à soma do uso do disco de cada subdiretório, quando eu usei
Demorei um pouco para perceber que o Nautilus envia os arquivos excluídos para a pasta Lixeira, e essa pasta não está listada no
du -sh *
comando. Então, só queria compartilhar isso, caso alguém enfrentasse o mesmo problema.fonte
Hmm, a melhor maneira é usar este comando:
Você poderá obter pastas de todos os tamanhos em todo o servidor. Fácil de ajudá-lo a encontrar os maiores tamanhos.
fonte
É fácil lembrar o seguinte
https://explainshell.com/explain?cmd=ls+-ltrapR
fonte
Se você deseja ter mais controle sobre o
size
que deseja listar os diretórios, poderá usar a opçãothreshold
(-t
) como em:du
-d
isku
sageh
- formato legível por humanost
- tamanho do limiarAqui, queremos listar todos os diretórios com tamanho superior a 1 GB.
Explicação :
As unidades descritas no wiki são as seguintes:
fonte
Corri para um problema semelhante ao que Martin Wilde descreveu, no meu caso, comparando o mesmo diretório em dois servidores diferentes após o espelhamento com o rsync.
Em vez de usar um script, adicionei o
-b
sinalizador aodu
qual conta o tamanho em bytes e até onde posso determinar eliminou as diferenças nos dois servidores. Você ainda pode usar-s -h
para obter uma saída compreensível.fonte
coloque no script init como .bashrc ... ajuste def conforme necessário.
fonte
digite "ls -ltrh / path_to_directory"
fonte