Comprobar si un archivo está vacío en Bash
-
Use el comando
test
con el indicador de opción-s
para verificar si un archivo está vacío en Bash -
Use el comando
ls
para verificar si un archivo está vacío en Bash
A menudo es necesario verificar si un archivo está vacío o no, y afortunadamente existen algunos métodos simples para verificarlo usando Bash en la terminal o incluso con un script de Bash.
Use el comando test
con el indicador de opción -s
para verificar si un archivo está vacío en Bash
El comando test
es uno de los comandos integrados de shell más útiles y tiene muchas opciones para archivos y directorios. La opción -s
del comando test
comprueba si un archivo tiene un tamaño superior a 0 o no.
Si el tamaño del archivo excede cero, el comando devolverá verdadero. De lo contrario, devolverá falso.
El uso de test -s
se demuestra a continuación. Explicaremos el comando test
mediante un ejemplo.
En este ejemplo, tenemos un archivo llamado newFile.txt
. Crearemos un script Bash titulado empty_test.sh
, de la siguiente manera:
#!/bin/bash
test -s newFile.txt && echo "file has something" || echo "file is empty"
Si el archivo newFile.txt
está vacío, el shell tendrá el siguiente resultado:
Por otro lado, si newFile.txt
tiene algún contenido, como por ejemplo:
Hello!
Entonces la salida será la siguiente:
El comando anterior es un método sencillo para verificar si el archivo seleccionado está vacío o no. Imprimirá el archivo tiene algo
si test -s newFile.txt
se evalúa como verdadero.
De lo contrario, imprimirá el archivo está vacío
. Este comando se puede usar en un script Bash o ejecutarse directamente en la terminal.
Es importante tener en cuenta que si este comando se usa en un directorio o nivel diferente al del archivo que se está verificando, será necesario escribir la ruta completa del archivo.
Hay una forma alternativa de escribir el comando anterior. En Bash, [
también es un shell integrado y es equivalente al comando test
:
#!/bin/bash
[ -s newFile.txt ] && echo "file has something" || echo "file is empty"
Este comando es equivalente al comando que usamos anteriormente.
También podemos usar el comando test -s
para encontrar todos los archivos vacíos en un directorio dado:
#!/bin/bash
for file in *.txt;
do if [ ! -s $file ];
then echo $file;
fi;
done
Los comandos anteriores imprimirán los nombres de todos los archivos .txt
vacíos en el directorio. Se puede personalizar fácilmente para verificar diferentes tipos de archivos simplemente reemplazando .txt
con otra extensión.
Use el comando ls
para verificar si un archivo está vacío en Bash
El comando ls
enumera todos los archivos y subdirectorios en el directorio actual. El comando ls
también se puede usar con el indicador de opción -s
para mostrar el tamaño de los archivos junto a sus nombres.
Por ejemplo, si ejecutamos el comando ls -s
en el directorio test
que hemos creado con dos subdirectorios y un archivo .docx
, obtenemos este resultado:
Es importante tener en cuenta que en macOS, este comando mostrará el tamaño de todos los subdirectorios como 0. Esto es independiente de si los subdirectorios tienen o no algún otro contenido.
También se debe tener en cuenta que el shell predeterminado en uso es zsh
(no el bash
). Sin embargo, esta no es una diferencia causada por el shell sino por el propio Sistema Operativo.
Para ilustrar este resultado en un entorno Linux, específicamente utilizando bash
, creamos una carpeta de prueba con dos directorios vacíos titulados Prueba 1
y Prueba 2
. También contiene dos archivos de texto, donde test.txt
tiene una pequeña cadena y test2.txt
es un archivo de texto en blanco.
Independientemente del tamaño de su contenido, los subdirectorios se muestran como 4 kilobytes
. Esto no es representativo del contenido real de la carpeta; este es el espacio de entrada ocupado.
Un mejor método es usar el comando ls
con el indicador de opción -l
, ya que esto mostrará más información en forma de tabla:
ls -l
Ejecutaremos este comando en el mismo directorio Test
que antes. La salida es la siguiente:
Como se vio anteriormente, el comando ls -l
brinda más información y muestra el tamaño correcto de los subdirectorios.
Para ver el tamaño en KB, MB y GB, utilice la opción -lh
. La inclusión de la bandera h
hace que los datos sean más legibles por humanos.
La salida será algo como lo siguiente: