2010-09-20 11:20:48 +0000 2010-09-20 11:20:48 +0000
163
163

ls-command: ¿cómo hacer que el comando &007 muestre el tamaño del archivo en megabytes?

En Unix (Tru64), ¿cómo hago que el comando ls muestre el tamaño del archivo en megabytes? Actualmente puedo mostrarlo en bytes usando lo siguiente:

ls -la

Respuestas (9)

250
250
250
2010-09-20 11:22:20 +0000

Tal vez -h sea suficiente para ti:

-h Cuando se usa con la opción -l, usa sufijos de unidades: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte y Petabyte para reducir el número de dígitos a tres o menos usando la base 2 para los tamaños.

ls -lah

Consejo general: Use man commandname para leer el manual/ayuda de un cierto comando, por ejemplo aquí man ls.

32
32
32
2010-09-20 12:33:13 +0000

ls --block-size=M imprime los tamaños en Megabytes pero muestra 1MB también para cualquier cosa por debajo de 1 MB. No estoy seguro de que esta opción sea aceptable en tu versión UNIX de ls, sin embargo.

En realidad ls -lh también imprime los tamaños en Gigabytes si el archivo es lo suficientemente grande (Bueno de todas formas: en Linux 64bit esto funciona :>)

En un nodo lateral: du -sh * imprime también los tamaños de los directorios en el directorio actual.

15
15
15
2010-09-20 13:36:26 +0000

Tendrás que usar awk para hacer las matemáticas por ti:

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

Esto no afectará a la salida de los archivos que sean más pequeños que mega.

Puede que tengas que ajustar el número de campo para que coincida con la forma en que tu ls está dispuesto. Puede cambiar mega a “1000000” si así lo prefiere.

Esto imprimirá más decimales de los que probablemente quiera. Podrías implementar una función de redondeo.

13
13
13
2012-10-14 08:27:30 +0000

pruebe ls -shR para un formato recursivo legible para los humanos.

5
5
5
2010-09-20 16:36:06 +0000

du -sm filename.txt

5
5
5
2015-04-19 22:57:53 +0000

También puede escribir

du -sh ./*

Esto listará todas las carpetas bajo el directorio actual, con formato legible por el hombre, incluyendo los tamaños de archivo más familiares en Kb, Mb, Gb.

2
2
2
2015-07-24 18:25:55 +0000
ls -l --block-size=MB

Para el parámetro --block-size:

  • use MB para 10^6
  • use sólo M para 2^20
2
2
2
2015-06-13 07:36:58 +0000

Si sólo quieres el tamaño de un archivo específico, entonces el comando, una extrapolación trivial de las respuestas anteriores, es:

ls -sh _filename(s)_

-s es para tamaño y el h es para Legible por los Humanos (como se mencionó anteriormente unas cuantas veces).

La salida será así:

753M myfilename

Si dejas fuera el/los nombre(s) de archivo, listará el directorio, colocando el tamaño de cada archivo junto a su nombre - no muy diferente de lo que hace ls -la cuando es invocado sin argumentos de nombre de archivo.

Espero que esto ayude.

0
0
0
2016-03-10 17:34:39 +0000

Si sólo te interesa el tamaño del archivo, y no tienes que usar el comando ls, intenta lo siguiente:

# 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

Esto imprimirá el tamaño del archivo sin necesidad de analizar nada.