¿Qué comandos necesito para que Linux ls
muestre el tamaño del archivo en MB?
ls -l --block-size=M
le 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=MB
en su lugar.
Si no desea que el M
sufijo 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 -lh
para 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.5G
y así sucesivamente.
El --block-size
parámetro se describe en la página del manual para ls; man ls
y 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-size
y -h
son 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 ls
de GNU Coreutils 8.5 admite --block-size y -h como se describió anteriormente. Gracias a kojiro por señalar esto.
--block-size=M
hagaM
que se muestre un sufijo junto al tamaño, y puede usarlo--block-size=1M
para 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).ls
? Standardls
no tiene tal argumento. Con la extensión xsils
tiene la-s
bandera, lo que hace que informe el número de bloques, pero no hay una bandera estándar--block-size
.--block-size
partir 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.:)
)--block-size
es una extensión GNU. Sospecho que Mac OS X no usa GNUls
.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.4K
o178M
.-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 GNU
ls
.fuente
h
es mucho más fácil de escribir que--block-size=M
ls -l
en absoluto si no los humanos? : pls -l
salida 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.ls -lhS
ordenar por tamaño, en formato legible para humanosfuente
ls -lh
respuesta por las razones por las cuales esto realmente no responde la pregunta.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.
fuente