ls-command: como exibir o tamanho do arquivo em megabytes?

151

No Unix (Tru64), como faço o comando ls mostrar o tamanho do arquivo em megabytes? Atualmente, posso mostrar em bytes usando o seguinte:

ls -la

    
por Mark Pearl 20.09.2010 / 13:20

10 respostas

229

Talvez -h seja suficiente para você:

-h
When used with the -l option, use unit suffixes: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte and Petabyte in order to reduce the number of digits to three or less using base 2 for sizes.

ls -lah

Recomendação geral: use man commandname para ler o manual / ajuda de um determinado comando, por exemplo aqui man ls .

    
por 20.09.2010 / 13:22
32

ls --block-size=M imprime os tamanhos em megabytes, mas mostra 1 MB também para qualquer coisa abaixo de 1 MB. Não tenho certeza se essa opção é aceitável em sua versão do UNIX para o ls.

Na verdade, ls -lh também imprime tamanhos em Gigabytes se o arquivo for grande o suficiente (Bem, de qualquer forma: em Linux 64 bits isso funciona: >)

Em um nó lateral: du -sh * também imprime tamanhos de diretório no diretório atual.

    
por 20.09.2010 / 14:33
15

Você terá que usar awk para fazer as contas por você:

ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'

Isso não afetará a saída de arquivos menores que mega .

Talvez seja necessário ajustar o número do campo para corresponder à maneira como seu ls é exibido. Você pode alterar mega para "1000000" se essa for sua preferência.

Isso imprimirá mais casas decimais do que você provavelmente deseja. Você poderia implementar uma função de arredondamento.

    
por 20.09.2010 / 15:36
14

tente ls -shR para o formato legível humano recursivo.

    
por 14.10.2012 / 10:27
6

experimente ls -lash , imprime tamanhos em formato legível por humanos

    
por 20.09.2010 / 13:23
5

du -sm filename.txt

    
por 20.09.2010 / 18:36
5

Você também pode digitar

du -sh ./*

Isso listará todas as pastas no diretório atual, com formato legível, incluindo os tamanhos de arquivo mais conhecidos em Kb, Mb, Gb.

    
por 20.04.2015 / 00:57
2

Se você quer apenas o tamanho de um arquivo específico, o comando, uma extrapolação trivial das respostas anteriores, é:

ls -sh filename(s)

-s é para tamanho e o h é para Human Readable (como mencionado acima algumas vezes).

A saída ficará assim:

753M myfilename

Se você deixar o (s) nome (s) de arquivo, ele listará o diretório, colocando o tamanho de cada arquivo ao lado de seu nome - não diferente de ls -la quando invocado sem argumentos de nome de arquivo.

Espero que isso ajude.

    
por 13.06.2015 / 09:36
0
ls -l --block-size=MB 

Para o parâmetro --block-size :

  • use MB para 10 ^ 6
  • use apenas M para 2 ^ 20
por 24.07.2015 / 20:25
0

Se você estiver interessado apenas no tamanho do arquivo e não precisar usar o comando ls , tente o seguinte:

# echo "Hello World" > file.txt
# ls -l file.txt 
-rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt
# stat --printf='%s\n' file.txt
12

Isso imprimirá o tamanho do arquivo sem a necessidade de analisar nada.

    
por 10.03.2016 / 18:34