Cómo obtener el tamaño de un archivo en un script bash

Cómo obtener el tamaño de un archivo en un script bash
Al escribir scripts de shell, podemos encontrar una situación en la que necesitamos saber el tamaño de un archivo. Por ejemplo, es posible que deba usar este tamaño para realizar otras acciones, como mover el archivo a un directorio diferente o eliminarlo.

Este tutorial discutirá métodos rápidos que puede usar en un script bash para obtener el tamaño del archivo en el formato especificado, como bytes, kilobytes, megabytes o gigabytes.

Método 1: el comando LS

El primer método es usar el buen comando LS. Cuando se combina con otros comandos, el comando LS puede obtener el tamaño de un archivo.

Para implementar el script, necesitamos la ruta completa del archivo, enumere la información del archivo con LS y tome el tamaño usando un comando como AWK.

Un script de muestra para eso se vería así:

#!/bin/bash
echo "Ingrese la ruta completa al archivo."
leer el archivo
filesize = $ (ls -lh $ archivo | awk 'imprimir $ 5')
echo "$ el archivo tiene un tamaño de $ filesize"

El script anterior es relativamente simple. Usando el comando echo y lectura, obtenemos el nombre de la ruta completa del archivo.

A continuación, usamos el comando LS -LH para enumerar todos los directorios y el tamaño en formato legible por humanos, y finalmente, pasamos la salida a AWK y agarra el tamaño como el 5th variable.

La siguiente es una ilustración del guión.

Chmod +x tamaño.mierda
./tamaño.mierda

Aquí está la salida para eso:

sudo ./tamaño.mierda
Ingrese la ruta completa al archivo
/etc/passwd
/etc/passwd tiene un tamaño de 2.9k

Método 2: el comando wc

Otro método que podemos usar para obtener el tamaño de un archivo en un script bash es el comando wc. El comando wc devuelve el número de palabras, el tamaño y el tamaño de un archivo en bytes.

Ahora:

Como saben, leer el tamaño del archivo en bytes no es muy fácil. Para contrarrestar esto, podemos implementar un menú simple y preguntarle al formato de tamaño del usuario como KB, MB y GB.

Dependiendo del formato seleccionado, convertiremos los bytes en dicho formato.

Aquí hay un script de ejemplo para implementar dicha lógica:

#!/bin/bash
echo "Formato de tamaño seleccionado, use valores numéricos (1 para bytes, 2 para kilobytes, etc.) "
eco """
1. Bytes
2. Kilobytes
3. Megabytes
4. Gigabytes
"" "
eco "************************************************ ************************ "
Formato de lectura
echo "Ingrese la ruta completa al archivo de destino": "
leer el archivo
filesize = $ (wc -c $ file | awk 'imprimir $ 1')
if [[("$ formato" == 1)]];
entonces
echo "$ el archivo es aproximadamente $ fileSize bytes"
elif [[("$ formato" == 2)]];
entonces
KB = $ (BC <<<"scale=3; $filesize / 1024")
echo "$ el archivo es aproximadamente $ kb kb"
elif [[("$ formato" == 3)]];
entonces
MB = $ (BC <<<"scale=6; $filesize / 1048576")
echo "$ el archivo es aproximadamente $ MB MB"
elif [[("$ formato" == 4)]];
entonces
GB = $ (BC <<<"scale=12; $filesize / 1073741824")
Echo "$ el archivo cuesta aproximadamente $ GB GB"
demás
hacer eco "formato incorrecto."
salida
FI

En el script anterior, comenzamos pidiendo al usuario que ingrese el formato de tamaño del archivo. Bash lee esta entrada y la almacena a la variable de formato.

A continuación, solicitamos al usuario la ruta del archivo y almacenamos esta variable en un archivo.

El siguiente paso llama al comando wc -c en el archivo especificado. Dado que WC -C devuelve el tamaño del archivo en bytes y la ruta del archivo, usamos AWK para obtener solo el tamaño del archivo. Almacenamos el tamaño en bytes como filesize.

Finalmente, implementamos una declaración IF simple para verificar si el formato de tamaño es 1 (bytes), 2 (kilobytes), 3 (megabytes), 4 (gigabyte). Luego usamos el comando BC para convertir el tamaño del archivo en bytes al formato especificado.

NOTA: Utilizamos una escala variable para el comando BC para acomodar el número de decimales por evaluación.

La imagen a continuación muestra cómo funciona el script.

OTRA NOTA: El script anterior es puro básico y, por lo tanto, está abierto a mejoras significativas. Siéntase libre de mejorarlo y modificarlo a sus necesidades.

Método 3: Uso del comando stat

No podemos olvidar el comando stat. Usando el comando stat, podemos mostrar información detallada sobre un archivo o el sistema de archivos.

El comando STAT devuelve el tamaño en bytes también. Puede usar una lógica similar en el script anterior para seleccionar el formato.

Aquí hay un script simple usando el comando stat:

#!/bin/bash
echo "Ingrese la ruta del archivo."
leer el archivo
filesize = ”$ (stat -c %s $ archivo)
echo "$ el archivo es preciso $ filesize bytes."

Para concluir

Este tutorial ha discutido tres métodos que puede usar para obtener el tamaño de un archivo utilizando un script bash. Es bueno tener en cuenta que Linux tiene una colección completa de herramientas y métodos para lograr esto. Encuentra el que funcione para ti y quédate con él.