Encontre tamanho do arquivo em MB

5

Como encontrar o tamanho do arquivo em MB na linha de comando do UNIX?

    
por splattne 07.07.2009 / 13:16

8 respostas

10

Se o seu ls suportar --block-size como o GNU coreutils ls :

ls -s --block-size=1048576 filename | cut -d' ' -f1
    
por 07.07.2009 / 12:12
8

du -h file

OU

ls -lh file

EDITAR

esta resposta está errada, pois pode reportar o tamanho também em Gb / Kb, dependendo do tamanho do arquivo. Por favor, remova os votos positivos .

    
por 07.07.2009 / 11:46
6

Eu costumo usar 'du -k myfile' para obter kbytes e visualmente derrubar os três últimos dígitos, mas estou apenas procurando por tamanho aproximado.

Acontece que muitas vezes (sempre?) tem a opção -m para MB.

Tenha em mente que o tamanho do arquivo provavelmente difere ligeiramente da quantidade de espaço em disco usada, já que a alocação de disco ocorre em blocos, não em bytes.

Se você está procurando arquivos 'gordinhos' por causa do baixo espaço em disco, isso seria uma questão mais esclarecedora, já que as soluções seriam mais variadas.

    
por 07.07.2009 / 16:28
3

Usando a opção -lh, você terá tamanhos em formato legível, por exemplo, se o tamanho do arquivo for 1025 M, a saída será 1G, caso contrário, você pode usar ls --block-size = 1024K -s ele dará tamanho no inteiro mais próximo em MBs.
Se você precisar de valores precisos (não arredondados), você pode usar o awk:

ls -l | awk '/d|-/{printf("%.3f %s\n",$5/(1024*1024),$9)}'
    
por 07.07.2009 / 12:03
2

stat pode fazer isso.

$ ls -l | grep myfile
-rw-------  1 rory rory      3120 2009-07-02 16:58 myfile
$ stat -c '%s' myfile
3120

que dão a você em bytes.

Você pode usar a aritmética de bash para calcular os megabytes:

$ echo $(( $( stat -c '%s' myfile ) / 1024 / 1024 ))
0

(mas isso é o caso)

    
por 07.07.2009 / 13:13
2

Eu encontrei um liner AWK 1, e ele tinha um bug, mas eu consertei. Eu também adicionei em PetaBytes após TeraBytes.

FILE_SIZE=234234 # FILESIZE IN BYTES
FILE_SIZE=$(echo "${FILE_SIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')

Considerando que stat não está em todos os sistemas, você quase sempre pode usar a solução AWK. Exemplo; o Raspberry Pi não tem stat mas tem awk .

    
por 09.08.2018 / 17:48
1

Você pode usar um pequeno script Python:

$ cat ./size_in_mb.py
#!/usr/local/bin/python
import os
import sys
print os.path.getsize(sys.argv[1])/1048576

$ ls -l test.tgz
-rw-r--r--  1 root root 258330336 Jul  7 00:04 test.tgz

$ ./size_in_mb.py test.tgz
246
    
por 03.07.2010 / 19:46
0

Eu vi isso em outro tópico e gostei dos resultados. No AIX, usei

ls -l [filename] | awk '{$5=sprintf("%.3f GB", $5/1024^3)} 1'

Produz a contagem de GB com 3 casas decimais

Exemplo de saída de

ls -l /tmp/myfile:

-rw-rw-rw- 1 owner group 0.530 GB Jul 8 10:33 /tmp/myfile

Você pode optar por aumentar a contagem decimal se o arquivo for menor que 1 MB. O exemplo acima, usando% .9f, daria:

0.530388314  GB
    
por 08.07.2016 / 20:47

Tags