¿Cómo comprobar si un archivo está vacío en Bash?

Resuelto Mich asked hace 12 años • 12 respuestas

Tengo un archivo llamado diff.txt . Quiero comprobar si está vacío.

Escribí un script bash similar al siguiente, pero no pude hacerlo funcionar.

if [ -s diff.txt ]
then
        touch empty.txt
        rm full.txt
else
        touch full.txt
        rm emtpy.txt
fi
Mich avatar Apr 01 '12 20:04 Mich
Aceptado

prueba esto:

#!/bin/bash -e

if [ -s diff.txt ]; then
        # The file is not-empty.
        rm -f empty.txt
        touch full.txt
else
        # The file is empty.
        rm -f full.txt
        touch empty.txt
fi

Por cierto, observe que he cambiado los roles de empty.txty full.txt, como sugiere @Matthias.

thb avatar Apr 01 '2012 13:04 thb
[ -s file.name ] || echo "file is empty"
mickey white avatar Dec 30 '2014 18:12 mickey white

[ -s file ] # Checks if file has size greater than 0

[ -s diff.txt ] && echo "file has something" || echo "file is empty"

Si es necesario, esto verifica todos los archivos *.txt en el directorio actual; e informa todo el archivo vacío:

for file in *.txt; do if [ ! -s $file ]; then echo $file; fi; done
Surya avatar May 09 '2017 03:05 Surya