Obtener el tamaño de un fichero en Bash

null

Para un script en el que ando “trabajando” me ha hecho falta conocer el tamaño de determinado fichero.

Aunque desde la terminal bastaría con lanzar un “ls -l” necesitaba una forma más sencilla de obtener dicha información sin tener que recurrir a awk ni a expresiones regulares “pseudo-complejas”.

Por fortuna existe una solución que permite obtener dicha información (y otros datos de cualquier fichero del sistema) desde un script bash.

El comando que hace el milagro es stat que proviene del término inglés status.

Para obtener el tamaño de un fichero (en bytes) nada mejor que lanzar un

stat -c %s NOMBRE_FICHERO

Donde:

  1. -c permite dar formato a la información a mostrar.
  2. %s nos permite indicar que queremos mostrar el tamaño (en bytes) del fichero NOMBRE_FICHERO.
  3. NOMBRE_FICHERO es el fichero del cual deseamos obtener información.

Un ejemplo sería:

stat -c %s pelicula-divx.iso

Donde, como ya habrás podido adivinar, obtendremos el tamaño del fichero pelicula-divx.iso.

Ampliando las posibilidades

Como hemos indicado, con -c podemos definir el formato de la información de salida; así por ejemplo, lanzando un

stat -c “El tamaño de %n es %s bytes.” pelicula-divx.iso

Obtendremos
null

Para conocer otros parámetros interesantes (del estilo de %n y %s) no tienes más que consultar la ayuda del comando lanzando un

stat --help.

9 comentarios hasta ahora

  1. Marcos Delgado on

    jeje, estuve buscando opciones; pero no, es la más sencilla.
    Saludos.

  2. fausto23 on

    Facil, buena opcion para encontrar el tamaño.

    Saludos

  3. Emilio on

    Yo conozco otra más sencilla, y que hasta convierte a unidades mas “legibles para humanos”: du

    Un ejemplo de uso: du -h miarchivo.iso
    O si queremos sin conversión de unidades: du miarchivo.iso
    O para un directorio: du -sh midirectorio/

    Pueden leer más sobre du corriendo du –help, o man du

    Un Saludo!

    • jasvazquez on

      Toda la razón del mundo @Emilio, gracias por el aporte.

      Por ponerle alguna pega (y de paso defender la opción que planteo) es que no permite definir el formato de salida de la información si no es usando “complicadas” expresiones con awk y similares ;)

      De todos modos me ha encantado poder contar con una nueva opción (va de cabeza a la caja de herramientas) pues se me había escapado dicha posibilidad de du (nuevamente por no leer y limitarme a usar las cosas “conocidas”)

      • Emilio on

        Me acabo de dar cuentas que si puedes elegir la unidad, prueba los switches -k y -m de du :D

  4. Gelo on

    ya veo que habeis dicho que el awk kk, pero a mi me resulta mas sencillo, hacer lo siguiente.

    ls -Shl fichero.txt

    Y en la quinta columna sale el tamaño del fichero. Si bien, lo que necesitas es solo el valor del tamaño…. pues el querido awk lo hace bien :D

    ls -Shl fichero.txt | awk {print$5}

    • jasvazquez on

      No, si sólo era cuestión de tiempo que saliese el “querido” awk ;)

      Gracias @Gelo por abrir el abanico de posibilidades para hacer una misma cosa (de ahí la grandeza del Software Libre y de todos vosotros que, lo creáis o no, formáis su Comunidad)

  5. lioner on

    Sólo hacer una pequeña correción a gelo sobre el querido awk, faltan un par de ‘ (comillas simples) para que funcione, es decir:

    ls -Shl fichero.txt | awk ‘{print $5}’

    Saludos!

  6. tania on

    mmmm … gracias Emilio me sirvio de mucho tu comentario (porque yo soy novata pues en esto de linux)


Replica