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?

Paul Sheldrake
fonte

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.

um CVn
fonte
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 .

Sirex
fonte
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

jaciefan
fonte
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
Marcos Placona
fonte
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