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

How Get Size File Bash Script



Al escribir scripts de shell, podemos encontrarnos con una situación en la que necesitamos saber el tamaño de un archivo. Por ejemplo, es posible que deba utilizar 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 viejo comando ls. Cuando se combina con otros comandos, el comando ls puede tomar el tamaño de un archivo.



Para implementar el script, necesitamos la ruta completa del archivo, listar la información del archivo con ls y tomar 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 expediente
tamaño del archivo=$(ls -lh $ archivo | awk '{imprimir $ 5}')
echo '$ archivotiene un tamaño de$'

La secuencia de comandos anterior es relativamente simple. Usando el comando echo y read, 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 tomamos el tamaño como 5thvariable.



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

chmod + x tamaño.sh
./size.sh

Aquí está la salida para eso:

sudo ./size.sh
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 tomar 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 sabes, leer el tamaño del archivo en bytes no es muy fácil. Para contrarrestar esto, podemos implementar un menú simple y preguntarle al usuario el formato de tamaño, como KB, MB y GB.

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

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

#! / bin / bash
echo 'Seleccione el formato de tamaño, use valores numéricos (1 para Bytes, 2 para Kilobytes, etc.)'
echo '''
1. Bytes
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
echo '************************************************************************'
leerformato

echo 'Ingrese la ruta completa al archivo de destino:'
leer expediente
tamaño del archivo=$(WC -c $ archivo | awk '{imprimir $ 1}')
si [[('$ formato'==1)]];
luego
echo '$ archivoes aprox.$Bytes'
elif [[('$ formato'==2)]];
luego
aprox.=$(antes de Cristo <<<'escala = 3;$/ 1024')
echo '$ archivoes aproximadamente$ kbKB '
elif [[('$ formato'==3)]];
luego
mb=$(antes de Cristo <<<'escala = 6;$/ 1048576')
echo '$ archivoes aproximadamente$mbMB'

elif [[('$ formato'==4)]];
luego
gb=$(antes de Cristo <<<'escala = 12;$/ 1073741824')
echo '$ archivoes aproximadamente$gbGB'
demás
echo 'Formato incorrecto.'
Salida
ser

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

A continuación, le pedimos 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 tomar solo el tamaño del archivo. Almacenamos el tamaño en bytes como.

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: Usamos una escala variable para el comando bc para acomodar el número de decimales por evaluación.

La siguiente imagen muestra cómo funciona el script.

OTRA NOTA : El script anterior es puro barebones y, por lo tanto, está abierto a mejoras significativas. Siéntase libre de mejorarlo y ajustarlo 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 también devuelve el tamaño en bytes. Puede utilizar una lógica similar en el script anterior para seleccionar el formato.

Aquí hay una secuencia de comandos simple que usa el comando stat:

#! / bin / bash
echo 'Introduzca la ruta del archivo'.
leer expediente
tamaño del archivo=$(estado -c %s$ archivo)
echo '$ archivoes preciso$bytes.'

Para concluir

Este tutorial ha discutido tres métodos que puede usar para obtener el tamaño de un archivo usando 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 te funcione y apégate a él.