Como faço para o `ls` mostrar tamanhos de arquivo em megabytes?


442

Quais comandos eu preciso para o Linux lsmostrar o tamanho do arquivo em MB?

Respostas:


513

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

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

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

Se você simplesmente deseja tamanhos de arquivo em unidades "razoáveis", em vez de especificamente megabytes , poderá usar -lhpara obter uma lista de formatos longos e uma apresentação de tamanho de arquivo legível por humanos . Isto irá utilizar unidades de tamanho de arquivo para manter os tamanhos dos arquivos apresentados com cerca de 1-3 dígitos (assim você verá tamanhos de arquivo como 6.1K, 151K, 7.1M, 15M, 1.5Ge assim por diante.

O --block-sizeparâmetro é descrito na página do manual para ls; man lse procure 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 um número de blocos de 429 bytes, se desejar). para).

Observe que ambas são extensões GNU --block-sizee -hestão sobre as do Open Groupls , portanto, isso pode não funcionar se você não tiver uma área de usuário GNU (o que a maioria das instalações Linux possui). O lsdo GNU Coreutils 8.5 suporta --block-size e -h como descrito acima. Obrigado a Kojiro por apontar isso.


11
Talvez seja interessante notar uma diferença: --block-size=Mfaça com que um Msufixo seja exibido ao lado do tamanho e você pode usá --block-size=1M-lo para omiti-lo. Também vale a pena mencionar que você precisa do GNU ls para isso (a maioria dos sistemas Linux não incorporados terá GNU ls).
— Stéphane Chazelas

2
Este seria o GNU ls? Padrãols não tem esse argumento. Com a extensão xsi ls tem o -ssinalizador, o que faz relatar o número de blocos, mas não há sinalizador padrão --block-size.
— Kojiro

2
O @kojiro GNU ls possui a --block-sizepartir do coreutils 8.5, que é o que está instalado no meu sistema Debian Squeeze. Como a pergunta era explicitamente para Linux e não especificava mais nada, admito que assumi uma área de usuário centrada nos coreutils do GNU. Atualizei a resposta para esclarecer isso. (Além disso, ls Open grupo não parecem ter -h também. :))
— um CVn

2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) é maior que 2 ^ 64 (o que é ~ 10 ^ 19,27) #
— Stéphane Chazelas

4
@ Tom Como diz o parágrafo final da resposta, --block-sizeé uma extensão do GNU. Suspeito que o Mac OS X não use o GNU ls.
— um CVn

385

ls -lh fornece tamanhos de arquivo legíveis por humanos, formato longo.

Ele usa sufixos k, M, G e T (ou nenhum sufixo para bytes), conforme necessário, para que o número permaneça pequeno, por exemplo, 1.4Kou 178M.

-h é uma extensão GNU coreutils, não POSIX de linha de base.

Observe que isso não responde à pergunta exatamente como solicitado. Se você deseja tamanhos estritamente no MiB, mesmo para arquivos pequenos ou gigantescos, a resposta de Michael Kjörling faz isso para os coreutils do GNUls .


4
Isso imprimirá tamanhos de arquivo em GB para algo maior do que pouco menos de 1,0 GiB (acredito).
— um CVn

5
@ MichaelKjörling Eu não vejo isso como uma resposta ruim (embora não tenha votado). Às vezes, o OP não faz uma pergunta exatamente como deveria, então era possível que eles apenas desejassem uma saída legível por seres humanos e, em vez disso, a expressassem como "em MB".
— Dason

5
Votado. "Isso não responde à pergunta (MB)" é uma afirmação perfeitamente válida, mas esta resposta apenas aumentou a utilidade desta página do SO, uma vez que esta resposta está no mesmo contexto. Eu só vim a esta página procurando uma solução para genéricos "datas dos espetáculos em um formato legível" exigência e hé muito mais fácil de escrever do que--block-size=M
— Ejaz

6
"legível por humanos" é meio irônico. Quem usa ls -lse não humanos? : p
— phil294

2
@chengyang: analisar a ls -lsaída é a maneira errada de fazer as coisas, 99% do tempo. unix.stackexchange.com/questions/128985/why-not-parse-ls . Esse 1% está sendo generoso e é praticamente limitado a linhas que você escreve interativamente para uso único, não um script que você usará repetidamente em nomes de arquivos desconhecidos.
— Peter Cordes

46

ls -lhS classificar por tamanho, em formato legível por humanos


2
Por favor, veja os comentários na ls -lhresposta por razões pelas quais isso realmente não responde à pergunta.
— Alexander Batischev

2
Isso não apenas não responde à pergunta (como discutido nos comentários à resposta da Sirex), mas também não acrescenta nada relevante a nenhuma das respostas existentes: o OP não está perguntando sobre a ordem de classificação.
— um CVn

6
apenas pensei que a classificação por tamanho é um potencial pessoas de acompanhamento pode ter, pelo menos é o que eu tinha
— jaciefan

1
Nesse caso, as pessoas devem consultar Como listar todos os arquivos ordenados por tamanho, exatamente sobre esse cenário.
— um CVn

Eu acredito que este seja um complemento digno das respostas, especialmente porque ele se
— baseia

9

E esta é a opção para listar tudo em uma ordem de diretório por tamanho de arquivo (ainda legível por humanos) crescente.

ls -lSrh

Você acha que os comentários da outra resposta que não respondem à pergunta se aplicam a essa também?
— Dan Dascalescu 6/07

@DanDascalescu Não. Esses comentários não são úteis, as 2 respostas em questão são. Apenas meus 2 centavos como um hack tentando descobrir como listar os tamanhos de arquivo em um sistema Linux que ele não sabe nada.
— Dowlers
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.