¿Cómo hago para que `ls` muestre tamaños de archivo en megabytes?

442

¿Qué comandos necesito para que Linux lsmuestre el tamaño del archivo en MB?

Paul Sheldrake
fuente

Respuestas:

513

ls -l --block-size=Mle dará una lista de formato largo (necesaria para ver realmente el tamaño del archivo) y redondeará los tamaños de archivo al MiB más cercano.

Si desea unidades de MB (10 ^ 6 bytes) en lugar de MiB (2 ^ 20 bytes), use --block-size=MBen su lugar.

Si no desea que el Msufijo se adjunte al tamaño del archivo, puede usar algo como --block-size=1M. Gracias Stéphane Chazelas por sugerir esto.

Si simplemente desea tamaños de archivo en unidades "razonables", en lugar de específicamente megabytes , puede usar -lhpara obtener una lista de formato largo y una presentación de tamaño de archivo legible por humanos . Esto utilizará unidades de tamaño de archivo para mantener los tamaños de archivo que se presentan con alrededor de 1-3 dígitos (por lo que verá tamaños de archivo como 6.1K, 151K, 7.1M, 15M, 1.5Gy así sucesivamente.

El --block-sizeparámetro se describe en la página del manual para ls; man lsy buscar SIZE. También permite unidades que no sean MB / MiB, y por lo que parece (no lo intenté) también tamaños de bloque arbitrarios (para que pueda ver el tamaño del archivo como un número de bloques de 429 bytes si lo desea a).

Tenga en cuenta que tanto --block-sizey -hson extensiones de GNU en la parte superior de la Open Grupo dels , por lo que este puede no funcionar si usted no tiene un espacio de usuario de GNU (que la mayoría de las instalaciones de Linux lo hacen). El lsde GNU Coreutils 8.5 admite --block-size y -h como se describió anteriormente. Gracias a kojiro por señalar esto.

un CVn
fuente
11
Tal vez valga la pena notar una diferencia: --block-size=Mhaga Mque se muestre un sufijo junto al tamaño, y puede usarlo --block-size=1Mpara omitirlo. Vale la pena mencionar también que necesita GNU ls para eso (la mayoría de los sistemas Linux no integrados tendrán GNU ls).
Stéphane Chazelas
2
¿Sería esto GNU ls? Standardls no tiene tal argumento. Con la extensión xsi ls tiene la -sbandera, lo que hace que informe el número de bloques, pero no hay una bandera estándar --block-size.
kojiro
2
@kojiro GNU ls tiene a --block-sizepartir de coreutils 8.5, que es lo que está instalado en mi sistema Debian Squeeze. Como la pregunta era explícitamente para Linux y no especificaba nada más, admito que asumí una tierra de usuarios centrada en los núcleos GNU. He actualizado la respuesta para aclarar esto. (Además, Open Group ls tampoco parece tener -h tampoco. :))
un CVn
2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) es mayor que 2 ^ 64 (que es ~ 10 ^ 19.27)
Stéphane Chazelas
44
@Tom Como se dice en el párrafo final de la respuesta, --block-sizees una extensión GNU. Sospecho que Mac OS X no usa GNU ls.
un CVn
385

ls -lh da tamaños de archivo legibles por humanos, formato largo.

Utiliza los sufijos k, M, G y T (o ningún sufijo para bytes) según sea necesario para que el número permanezca pequeño, por ejemplo, 1.4Ko 178M.

-h es una extensión de GNU coreutils, no la línea de base POSIX.

Tenga en cuenta que esto no responde la pregunta exactamente como se le preguntó. Si desea tamaños estrictamente en MiB incluso para archivos pequeños o gigantes, la respuesta de Michael Kjörling lo hace para los coreutils de GNUls .

Sirex
fuente
44
Eso imprimirá tamaños de archivo en GB para algo más grande que poco menos de 1.0 GiB (creo).
un CVn
55
@ MichaelKjörling No lo veo como una mala respuesta (aunque no voté). A veces, el OP no formula una pregunta exactamente como debería, por lo que era posible que solo quisieran una salida legible por humanos y en su lugar la expresaron como "en MB".
Dason
55
Votado. "Esto no responde la pregunta (MB)" es una afirmación perfectamente válida, pero esta respuesta solo ha aumentado la utilidad de esta página SO ya que esta respuesta está en el mismo contexto. Solo vine a esta página buscando una solución al requisito genérico de "mostrar fechas en forma legible para humanos" y hes mucho más fácil de escribir que--block-size=M
Ejaz
66
"legible por humanos" es algo irónico. ¿Quién usa ls -len absoluto si no los humanos? : p
phil294
2
@chengyang: analizar la ls -lsalida es la forma incorrecta de hacer las cosas, el 99% del tiempo. unix.stackexchange.com/questions/128985/why-not-parse-ls . Ese 1% está siendo generoso, y está bastante limitado a frases que escribes interactivamente para un solo uso, no un script que vas a usar repetidamente en nombres de archivo desconocidos.
Peter Cordes
46

ls -lhS ordenar por tamaño, en formato legible para humanos

jaciefan
fuente
2
Consulte los comentarios sobre la ls -lhrespuesta por las razones por las cuales esto realmente no responde la pregunta.
Alexander Batischev
2
Esto no solo no responde realmente la pregunta (como se discutió en los comentarios a la respuesta de Sirex) sino que tampoco agrega nada relevante sobre ninguna de las respuestas existentes: el OP no pregunta sobre el orden de clasificación.
un CVn
66
solo pensé que ordenar por tamaño es un seguimiento potencial que la gente podría tener, al menos eso es lo que tenía
jaciefan
1
En ese caso, la gente debería mirar Cómo enumerar todos los archivos ordenados por tamaño, que se trata exactamente de ese escenario.
un CVn
Creo que esta es una adición digna a las respuestas, especialmente porque desarrolla la respuesta Sirex
Dowlers
9

Y esta es la opción para enumerar todo en un orden de directorio por tamaño de archivo (aún legible por humanos) ascendente.

ls -lSrh
Marcos Placona
fuente
¿Crees que los comentarios de la otra respuesta que no responden la pregunta se aplican también a esta?
Dan Dascalescu
@DanDascalescu No. Esos comentarios no son útiles, las 2 respuestas en cuestión sí. Solo mis 2 centavos como pirata informático tratando de descubrir cómo enumerar los tamaños de archivo en un sistema Linux del que no sabe nada.
Dowlers