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
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
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
.
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.
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.
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.
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.