Como posso ver o tamanho dos arquivos e diretórios no linux?

340

Como posso ver o tamanho dos arquivos e diretórios no Linux? Se usado df -m, ele mostra o tamanho de todo o diretório no nível superior, mas, para os diretórios e arquivos dentro do diretório, como verifico o tamanho?

Advait
fonte

Respostas:

533

Use o lscomando para arquivos e o ducomando para diretórios.

Verificando tamanhos de arquivo

ls -l filename   #Displays Size of the specified file
ls -l *          #Displays Size of All the files in the current directory
ls -al *         #Displays Size of All the files including hidden files in the current directory
ls -al dir/      #Displays Size of All the files including hidden files in the 'dir' directory

lsO comando não listará o tamanho real dos diretórios ( por quê? ). Portanto, usamos dupara esse fim.

Verificando tamanhos de diretório

du -sh directory_name    #Gives you the summarized(-s) size of the directory in human readable(-h) format
du -bsh *                #Gives you the apparent(-b) summarized(-s) size of all the files and directories in the current directory in human readable(-h) format

Incluindo -hopção em qualquer um dos comandos acima (por Ex: ls -lh *ou du -sh) lhe dará o tamanho em formato legível ( kb, mb, gb, ...)

Para mais informações, consulte man lseman du

mk ..
fonte
7
lsnão mostrará o tamanho total de todo o conteúdo de um diretório.
Maxim Egorushkin
3
@MaximYegorushkin Obrigado. Corrigido.
.. 24/06
2
como posso ver o tamanho em bytes (Mega, Giga, ...)?
Francisco Corrales Morales
7
@FranciscoCorralesMorales ls -lh irá mostrar-lhe o tamanho em kb MB GB etc.
mk ..
4
observe que o ducomando mostra o uso do disco do arquivo, que pode ser maior que o tamanho real do arquivo. Você pode usar du -dpara obter o tamanho real como lsfaz. Mais informações: unix.stackexchange.com/a/106278/155224
Lucas Alonso
147

Existe ducomando.

Tamanho de um diretório e / ou arquivo:

$ du -sh .bashrc /tmp

--apparent-sizeA opção de linha de comando o faz medir tamanhos aparentes (o que lsmostra) em vez do uso real do disco.

Maxim Egorushkin
fonte
11
como posso ver o tamanho em bytes (Kilo, Mega, Giga, ...)?
Francisco Corrales Morales
8
@FranciscoCorralesMorales -hbandeira deve fazer o que você perguntar: tamanhos em formato legível (por exemplo, 1K 234m 2G)
Maxim Egorushkin
3
Eu não acho que isso esteja certo. O que dufaz é resumir o uso de disco do conjunto de arquivos , ou seja, se um arquivo é muito pequeno (por exemplo, 2140 bytes), a saída de "du" é (no meu caso) 4KB porque esse é o tamanho do cluster
mfloris
@mfloris Use --apparent-sizeentão.
Maxim Egorushkin
3
Eu gosto du -hs *de ver o tamanho de todos os arquivos e diretórios no diretório atual.
Jordan Stewart.
82

Use ls -spara listar o tamanho do arquivo ou, se preferir, ls -shpara tamanhos legíveis por humanos.

Para diretórios du, use , e novamente, du -hpara tamanhos legíveis por humanos.

Thor
fonte
7
Uma dica é usar; 'du -sh *' para listar todos os tamanhos de diretório. :)
Entalpi
35

Você pode usar:

ls -lh

Usando este comando, você verá o espaço aparente do diretório e o espaço real dos arquivos e em detalhes os nomes dos arquivos exibidos, além do tamanho e da data de criação de cada um.

Yenier Torres
fonte
ls -lvai dar u tamanho do arquivo, incluindo os metadados? como parece ser ligeiramente 4kb maior para um de arquivo que eu tentei com
Jun711
22

Tamanho do arquivo em MB

ls -l --b=M  filename | cut -d " " -f5

Tamanho do arquivo em GB

ls -l --b=G  filename | cut -d " " -f5
Ravichandra
fonte
Como obter os dois campos como saída?
precisa saber é o seguinte
17

Há também um ótimo ncduutilitário - ele pode mostrar o tamanho do diretório com informações detalhadas sobre subpastas e arquivos.

Instalação

Ubuntu:

$ sudo apt-get install ncdu

Uso

Basta digitar ncdu [path]na linha de comando. Após alguns segundos para analisar o caminho, você verá algo assim:

$ ncdu 1.11 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------
.  96,1 GiB [##########] /home
.  17,7 GiB [#         ] /usr
.   4,5 GiB [          ] /var
    1,1 GiB [          ] /lib
  732,1 MiB [          ] /opt
. 275,6 MiB [          ] /boot
  198,0 MiB [          ] /storage
. 153,5 MiB [          ] /run
.  16,6 MiB [          ] /etc
   13,5 MiB [          ] /bin
   11,3 MiB [          ] /sbin
.   8,8 MiB [          ] /tmp
.   2,2 MiB [          ] /dev
!  16,0 KiB [          ] /lost+found
    8,0 KiB [          ] /media
    8,0 KiB [          ] /snap
    4,0 KiB [          ] /lib64
e   4,0 KiB [          ] /srv
!   4,0 KiB [          ] /root
e   4,0 KiB [          ] /mnt
e   4,0 KiB [          ] /cdrom
.   0,0   B [          ] /proc
.   0,0   B [          ] /sys
@   0,0   B [          ]  initrd.img.old
@   0,0   B [          ]  initrd.img
@   0,0   B [          ]  vmlinuz.old
@   0,0   B [          ]  vmlinuz

Exclua o elemento destacado no momento com d, saia com CTRL+c

avtomaton
fonte
15

ls -l --block-size = M fornecerá uma lista de formatos longos (necessária para realmente ver o tamanho do arquivo) e arredondará os tamanhos de arquivo até o MiB mais próximo.

Se você quiser unidades MB (10 ^ 6 bytes) em vez de unidades MiB (2 ^ 20 bytes), use --block-size = MB.

Se você não deseja que o sufixo M seja anexado ao tamanho do arquivo, use algo como --block-size = 1M. Obrigado Stéphane Chazelas por sugerir isso.

Isso é descrito na página do manual para ls; man sl e procure por SIZE. Ele também permite outras unidades além de MB / MiB e, pelo que parece (não tentei), tamanhos arbitrários de blocos (para que você possa ver o tamanho do arquivo como número de blocos de 412 bytes, se desejar). para).

Observe que o parâmetro --block-size é uma extensão GNU sobre as ls do Open Group, portanto, isso pode não funcionar se você não tiver uma área de usuário GNU (como a maioria das instalações do Linux). O sl do GNU coreutils 8.5 suporta --block-size como descrito acima.

Adi
fonte
13

Vá para o diretório escolhido e execute:

$ du -d 1 -h

Onde:

-d 1 is the depth of the directories

-h is the human-readable option

Você verá assim:

0   ./proc
8.5M    ./run
0   ./sys
56M ./etc
12G ./root
33G ./var
23M ./tmp
3.2G    ./usr
154M    ./boot
26G ./home
0   ./media
0   ./mnt
421M    ./opt
0   ./srv
2.6G    ./backups
80G .
Claudio Guirunas
fonte
9

Se você o estiver usando em um script, use stat.

$ date | tee /tmp/foo
Wed Mar 13 05:36:31 UTC 2019

$ stat -c %s /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 05:36 /tmp/foo

Isso lhe dará tamanho em bytes. Veja man statpara mais opções de formato de saída.

O equivalente OSX / BSD é:

$ date | tee /tmp/foo
Wed Mar 13 00:54:16 EDT 2019

$ stat -f %z /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 00:54 /tmp/foo
Bruno Bronosky
fonte
7

Eu faço o seguinte o tempo todo:

$ du -sh backup-lr-May-02-2017-1493723588.tar.gz

NB:

-s, --summarize
            display only a total for each argument
-h, --human-readable
            print sizes in human readable format (e.g., 1K 234M 2G)
Fokwa Best
fonte
7

Você pode usar o comando abaixo para obter a lista de arquivos em formato legível facilmente humano.

ls -lrtsh

Amit
fonte
5

Para obter o tamanho total do diretório ou o tamanho total do arquivo usado,

du -csh <directory or filename*> | grep total
suhail ahamed F
fonte
5

Use o comando ls com o argumento -h: [root @ hots19 etc] # ls -lh
h: para leitura humana.

Exemple: 
    [root@CIEYY1Z3 etc]# ls -lh
    total 1.4M
    -rw-r--r--.  1 root   root      44M Sep 15  2015 adjtime
    -rw-r--r--.  1 root   root     1.5K Jun  7  2013 aliases
    -rw-r--r--   1 root   root      12K Nov 25  2015 aliases.db
    drwxr-xr-x.  2 root   root     4.0K Jan 11  2018 alternatives
    -rw-------.  1 root   root      541 Jul  8  2014 anacrontab
    -rw-r--r--.  1 root   root      55M Sep 16  2014 asound.conf
    -rw-r--r--.  1 root   root       1G Oct  6  2014 at.deny
mkebri
fonte
4

Eu mesmo sou um usuário do Ubuntu 16.04 e acho que o llcomando é de longe a maneira mais fácil de ver o conteúdo de um diretório. Notei que nem todas as distribuições Linux suportam esse comando, mas provavelmente existe uma solução alternativa / instalação para cada distribuição disponível.

Exemplo:

user@user-XPS-15-9560:/$ ll
total 188
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ./
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ../
drwxr-xr-x   2 root root  4096 Jan 22 15:13 bin/
drwxr-xr-x   4 root root 12288 Jan 29 11:35 boot/
drwxr-xr-x   2 root root  4096 Sep  3 18:14 cdrom/
drwxr-xr-x  20 root root  4440 Feb  5 08:43 dev/
drwxr-xr-x 153 root root 12288 Feb  2 15:17 etc/
drwxr-xr-x   4 root root  4096 Sep  3 18:15 home/
...

A maior vantagem para mim é que é rápido e muito intuitivo de usar.

UPDATE: o que eu não sabia era que no Ubuntu é um alias pré-configurado. Você pode configurá-lo facilmente executando alias ll="ls -la"na linha de comando ou adicionando esta entrada no seu arquivo de configuração .bashrc:

sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc
Matteus
fonte
3

du -sh [nome_do_arquivo]

funciona perfeitamente para obter o tamanho de um arquivo específico.

Eyshika
fonte
11
Isso mostra a saída em bits ou bytes?
Embedded_Mugs
3

Tudo que você precisa é -le --block-sizebandeiras

Tamanho de todos os arquivos e diretórios no diretório de trabalho (em MBs)

ls -l --block-size=M

Tamanho de todos os arquivos e diretórios no diretório de trabalho (em GBs)

ls -l --block-size=G

Tamanho de um arquivo ou diretório específico

ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/

ls --help

-l use um formato de listagem longo

--block-size=SIZE: dimensione os tamanhos SIZEantes de imprimi-los; por exemplo, '--block-size=M'imprime tamanhos em unidades de 1.048.576 bytes; VejoSIZE formato abaixo

SIZEé um número inteiro e uma unidade opcional (exemplo: 10M é 10 * 1024 * 1024). As unidades são K, M, G, T, P, E, Z, Y (potências de 1024) ou KB, MB, ... (potências de 1000).


Giorgos Myrianthous
fonte
2

Você precisa diferenciar entre tamanho do arquivo e uso do disco . A principal diferença entre os dois vem do fato de os arquivos serem "cortados em pedaços" e armazenados em blocos.

O tamanho do bloco moderno é 4KiB; portanto, os arquivos usarão espaço em disco múltiplo de 4KiB, independentemente do tamanho deles.

Se você usar o comando, statpoderá ver as duas figuras lado a lado.

stat file.c

Se você deseja uma visão mais compacta de um diretório, pode usar ls -ls, o que lhe dará uso em unidades de 1 KB.

ls -ls dir

Também dufornecerá o uso real do disco, em unidades de 1 KB ou em conformidade com o -usinalizador.

Exemplo: uso de um arquivo de 1 byte

$ echo "" > file.c

$ ls -l file.c
-rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ ls -ls file.c
4 -rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ du file.c
4 file.c

$ dutree file.c
[ file.c 1 B ]

$ dutree -u file.c
[ file.c 4.00 KiB ]

$ stat file.c
 File: file.c
 Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: 2fh/47d Inode: 2185244 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nacho) Gid: ( 1000/ nacho)
Access: 2018-04-30 20:41:58.002124411 +0200
Modify: 2018-04-30 20:42:24.835458383 +0200
Change: 2018-04-30 20:42:24.835458383 +0200
 Birth: -

Além disso, nos sistemas de arquivos modernos, podemos ter instantâneos, arquivos esparsos (arquivos com falhas ) que complicam ainda mais a situação.

Você pode ver mais detalhes neste artigo: entendendo o tamanho do arquivo no Linux

nachoparker
fonte
1

você pode usar ls -sh no linux, você pode classificar também, você precisa ir para o diretório onde deseja verificar o tamanho dos arquivos

Prem S
fonte
1

vá para o diretório específico e execute o comando abaixo

# du -sh * 

4.0K    1
4.0K    anadb.sh --> Shell file
4.0K    db.sh/    --> shell file
24K     backup4/  --> Directory
8.0K    backup6/  --> Directory 
1.9G    backup.sql.gz  --> sql file
sachin_ur
fonte
0

Você pode usar ncduo analisador de uso de disco aqui. Ele exibe o tamanho dos arquivos e diretórios em uma interface ncurses. Você pode navegar para cada diretório e ver os tamanhos dos arquivos na mesma interface.

Para instalar

$ sudo apt-get install ncdu

Analisar

$ ncdu <directory>

insira a descrição da imagem aqui

sumedhe
fonte