Pregunta ls-command: ¿cómo mostrar 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


148


origen




Respuestas:


Tal vez -h es suficiente para ti:

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

ls -lah

Consejo general: uso man commandname leer el manual / ayuda de un cierto comando, p. aquí man ls.


226



Gracias, pero la opción -h no parece existir en Tru64 Unix.
Consejo general: instala las utilidades de GNU ... - reinierpost
Me gusta tu consejo sobre el uso del hombre, pero en realidad, buscar en Google es mucho más rápido que usar al hombre la mayor parte del tiempo (como ahora, cuando encontré este resultado en Google). - trusktr
Las buenas y todas sugerencias generales de Google, pero en última instancia las páginas man son sistemas / SO, incluso específicos del host, generalmente creados cuando se compila o instala el software, y por lo tanto, autoritativos para el software en su sistema particular. - Nevin Williams
Para cerrar el círculo, hay un hombre en línea para gnu / linux: linux.die.net/man - MariusMatutiae


ls --block-size=M imprime los tamaños en Megabytes pero muestra 1MB también para cualquier cosa inferior a 1 MB. Sin embargo, no estoy seguro si esta opción es aceptable en tu versión de UNIX de ls.

Actualmente ls -lh también imprime tamaños en Gigabytes si el archivo es lo suficientemente grande (Bueno, de todos modos: en Linux 64 bits esto funciona:>)

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


32



¡Gracias! Necesitaba monitorear cambios de archivos en vivo en una carpeta y usar ls -h no tiene sentido después de que un archivo crece más de 1GB, entonces uso este comando en un ciclo de 1 segundo: while true ; do ls -al --block-size=M ; sleep 1 ; done - ccpizza


tratar ls -shR para el formato legible humano recursivo.


14



OP ha declarado que no hay -h en Tru64, y lo hizo más de dos años antes de que se publicara esta respuesta. - Michael Kjörling
Pensamiento Es mi responsabilidad ayudar a quienes llegan aquí con la misma búsqueda en Google. - Sorter


Tendrás que usar awk para hacer los cálculos por ti:

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

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

Es posible que deba ajustar el número de campo para que coincida con la forma en que su ls está presentado. Tu puedes cambiar mega a "1000000" si esa es su preferencia.

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


14



Mucho menos elegante que ls -lh o ls --block-size=M, ¡pero AWK es muy útil! - Statwonk
Justo lo que necesitaba. Todas las otras soluciones redondean al MB más cercano, pero esto muestra algunos lugares decimales y es fácilmente personalizable. - zeroimpl
Esta es una buena solución para esos sistemas (AIX, te estoy mirando) que no tienen la opción -h. - Buggabill


tratar ls -lash, imprime tamaños en formato legible para humanos


6





du -sm filename.txt


5



siempre redondea el tamaño ... si el tamaño es inferior a 1 MB, digamos 500K, también imprimirá 1M - AnonGeek


También puedes escribir

du -sh ./*

Esto mostrará una lista de todas las carpetas en el directorio actual, con formato legible para las personas, incluidos los tamaños de archivo más familiares en Kb, Mb, Gb.


5





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

ls -sh nombre (s) de archivo

-s es para el tamaño y el h es para lectura humana (como se mencionó anteriormente algunas veces).

La salida se verá así:

753M myfilename

Si omite el / los nombre (s) de archivo, mostrará el directorio, colocando el tamaño de cada archivo al lado de su nombre, no muy diferente de ls -la lo hace cuando se invoca sin argumentos de nombre de archivo.

Espero que esto ayude.


2



Esta pregunta es sobre Tru64 Unix, y la OP declaró hace casi cinco años que la -h la opción no existe en ls en ese sistema. - G-Man


ls -l --block-size=MB 

Para el --block-size parámetro:

  • utilizar MB por 10 ^ 6
  • usar solo M para 2 ^ 20

0



Tenga en cuenta que esto no mostrará decimales. También, cualquier cosa por encima de 0 kB pero no más de 1 MB se mostrará como 1MB. Por esta razón encontré ls -l --block-size=kB ser más útil. - DaAwesomeP


Si solo está interesado en el tamaño del archivo, y no tiene que usar el ls comando, intente 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 la necesidad de analizar nada.


0



OP quiere tamaño en MB, ¿tal vez una opción estadística producirá tamaño en forma legible por humanos? - Archemar
Ah, eso fue tonto de mi parte. Gracias por atrapar eso. stat no tiene una opción para manipular el tamaño usando --printf o cualquier otra opción hasta donde yo sé. Es probable que requiera el uso de una combinación de utilidades de línea de comandos printf y bc. En ese caso, ¿para qué molestarse? ls y cut / awk serían más rápidos. - SKN