Se o seu ls
suportar --block-size
como o GNU coreutils ls
:
ls -s --block-size=1048576 filename | cut -d' ' -f1
Como encontrar o tamanho do arquivo em MB na linha de comando do UNIX?
Se o seu ls
suportar --block-size
como o GNU coreutils ls
:
ls -s --block-size=1048576 filename | cut -d' ' -f1
du -h file
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 .
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.
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)}'
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)
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 .
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
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
Tags unix