Como encontrar recursivamente a quantidade armazenada no diretório?

136

Sei que você pode ver o tamanho de byte de um arquivo quando faz uma listagem longa com llor ls -l. Mas quero saber quanto espaço de armazenamento há em um diretório, incluindo os arquivos desse diretório e os subdiretórios, etc. Não quero o número de arquivos, mas a quantidade de armazenamento que esses arquivos ocupam.

Então, eu quero saber quanto armazenamento há em um determinado diretório recursivamente? Eu estou supondo, se houver um comando, que seria em bytes.

Rob Avery IV
fonte

Respostas:

146

Tente fazer isso:

du -s dir

ou

du -sh dir

precisa de -hsuporte, depende do seu sistema operacional.

Vejo

man du
Gilles Quenot
fonte
2
adicionar -bà saída em bytes
pcnate 17/03/16
4
lista --all todos os arquivos e -h mostra o tamanho do arquivo em formato legível du -h --all
Praneeth
29

Você apenas faz:

du -sh /path/to/directory

onde -sé para resumo e legível-h por humanos ( opção não padrão ).

Tenha cuidado , no entanto, ao contrário ls, isso não mostrará o tamanho do arquivo, mas o uso do disco (ou seja, um múltiplo do tamanho do bloco do sistema de arquivos), mas o arquivo pode ser menor ou até maior, para que você possa usar a --apparent-sizeopção:

du -sh --apparent-size /path/to/directory

Esse é o tamanho que seria transferido pela rede, se necessário.

De fato, o arquivo pode ter "buracos" (shell vazio), pode ser menor que o tamanho do bloco do sistema de arquivos, pode ser compactado no nível do sistema de arquivos etc. A página de manual explica isso.

Como Nicklas aponta , você também pode usar o ncduanalisador de uso de disco. Lançado em um diretório, ele mostra quais pastas e arquivos usam espaço em disco, ordenando-os do maior para o menor.

Você pode ver essa pergunta também.

Totor
fonte
19

Observe que, se você quiser saber o tamanho de todas as {sub} pastas dentro de um diretório, também poderá usar a opção -dou (que aceita um argumento: o limite recursivo)--max-depthdu

Por exemplo :

du -h /path/to/directory -d 1

Vai mostrar algo como

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PS: Entrar 0como o limite recursivo é equivalente à -sopção. Esses 2 comandos fornecerão o mesmo resultado (o tamanho legível humano recursivo do diretório especificado):

du -h /path/to/directory -d 0
du -sh /path/to/directory
Flo Schild
fonte
-d 1precisa estar antes do caminho do diretório
Abhinav Singi 04/10
Precisa? Funciona para mim após o caminho do diretório, no ubuntu / debian. É melhor ainda tê-lo antes, eu concordo #
Flo Schild
14

Uma alternativa ao ducomando já mencionado seria ncduum bom analisador de uso de disco para uso no terminal. Pode ser necessário instalá-lo primeiro, mas ele está disponível na maioria dos repositórios de pacotes.

Edit: Para o formato de saída, veja estas capturas de tela http://dev.yorhel.nl/ncdu/scr

Niklas
fonte
Milagre! Com isso, posso ver quais pastas estão mantendo um grande volume de armazenamento em tamanho de disco. Eu também encontrei todos os meus arquivos que desapareceram misteriosamente. É uma ótima ferramenta.
Faron
11

Isso fornecerá uma lista de tamanhos do diretório atual, incluindo pastas (recursivas) e arquivos.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt
Simon Liu
fonte
3
ordenar por tamanho: du -hs * | sort -hs
Kaiser
3

No Unix, um diretório contém apenas nomes e referências a objetos do sistema de arquivos (inodes, que podem se referir a diretórios, arquivos ou outras coisas exóticas). Um arquivo pode aparecer sob vários nomes no mesmo diretório ou ser listado em vários diretórios. Portanto, "o espaço usado pelo diretório e pelos arquivos internos" realmente não faz sentido, pois os arquivos não estão "internos".

Dito isto, o comando du(1)lista o espaço usado por um diretório e tudo o que é acessível através dele, du -sfornece um resumo, com -halgumas implementações como o GNU que dufornecem uma saída "legível por humanos" (por exemplo, kilobyte, megabyte).

vonbrand
fonte
1

Para mim, funcionou ao contrário no caso da profundidade e do caminho em um OS X El Capitán

du -h -d 1 /path/to/directory
GZepeda
fonte
1

Você pode usar "file-size.sh" na biblioteca do awk Velour :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
fonte