5 formas de verificar si un archivo está vacío en Bash

5 formas de verificar si un archivo está vacío en Bash

En Linux, un archivo vacío es un archivo que tiene un tamaño de bytes cero. Esto significa que el archivo no contiene ningún dato, y no tiene ningún contenido cuando se abre en un editor de texto. Se puede crear un archivo vacío usando el comando touch: 'Toca myfile.TXT'

Esto creará un archivo vacío llamado myfile.txt en el directorio actual. También puede crear un archivo vacío utilizando el comando echo con el operador>: 'echo> myfile.TXT'

Esto sobrescribirá cualquier contenido existente en el archivo con una cadena vacía, creando efectivamente un archivo vacío.

Método para verificar si un archivo está vacío en Bash

Hay varias formas diferentes de verificar si un archivo está vacío en Bash, dependiendo de sus necesidades específicas y las herramientas disponibles en su sistema. En este artículo, analizaremos cinco enfoques diferentes para verificar si un archivo está vacío en Bash.

  1. Utilizando el 'prueba' comando o '['
  2. El 'prueba' comando (que es un alias para el '['Comando) es una utilidad simple y ampliamente disponible para realizar varias pruebas en archivos y otros objetos en Bash. Para verificar si un archivo está vacío usando '[', puedes usar el '-s' opción, que verifica el tamaño del archivo:

    #!/usr/bin/env Bash FileName = myFile.txt # verifique si el archivo está vacío si [ ! -S "$ nombre de archivo"]; entonces echo "archivo es vacío" el más eco "el archivo no está vacío" FI
    12345678910#!/usr/bin/env Bash FileName = myFile.txt # verifique si el archivo está vacío [ ! -S "$ nombre de archivo"]; entonces echo "archivo es vacío" el más eco "el archivo no está vacío" FI

    Tenga en cuenta que el '-s' La opción considera que un archivo está vacío si su tamaño es cero, pero no verifica la presencia de caracteres ocultos o espacios en blanco. Si desea verificar un archivo completamente vacío (yo.mi., uno que contiene solo espacios en blanco o no tiene líneas en absoluto), puede usar el '-Z' opción, que verifica si la cadena está vacía:

    #!/usr/bin/env Bash FileName = myFile.El archivo txt [-z "$ (cat $ nombre de archivo)"] entonces echo "el archivo está vacío" de lo contrario, el archivo echo "no está vacío" Fi
    123456789#!/usr/bin/env Bash FileName = myFile.El archivo txt [-z "$ (cat $ nombre de archivo)"] entonces echo "el archivo está vacío" de lo contrario, el archivo echo "no está vacío" Fi

    Esto leerá el contenido del archivo y los pasará al comando de prueba como una cadena. Si la cadena está vacía, el archivo se considera vacío.

    También puede verificar los archivos existentes antes de probar el archivo vacío. El script a continuación verificará si el archivo existe y si el archivo está vacío o no.

    #!/usr/bin/env Bash FileName = myFile.txt if [-f "$ FileName"]; entonces if [-s "$ FileName"]; entonces Echo "Archivo $ FileName existe y no existe el archivo de" else echo "$ FileName pero vacía Archivo "Fi Else echo" $ nombre de archivo no existe "Fi
    12345678910111213#!/usr/bin/env Bash FileName = myFile.txt if [-f "$ FileName"]; entonces if [-s "$ nombre de archivo"]; entonces echo "archivo $ nombre de archivo existe y no existe el archivo de" otra eco "$ nombre de archivo pero vacía Archivo "Fielse Echo" $ nombre de archivo no existe "Fi

    Según el ejemplo anterior, si mi archivo.TXT no existe, el script mostrará la salida como "archivo no existe" y si el archivo existe y es un archivo vacío, entonces mostrará la salida como "el archivo existe pero vacío", de lo contrario, si el archivo existe tiene algo de contenido. Mostrar salida como "el archivo existe y no vacío".

  3. Usando el comando wc
  4. El 'WC' (Conteo de palabras) El comando es otra utilidad que se puede usar para verificar si un archivo está vacío en Bash. Para verificar el número de líneas en un archivo, puede usar el '-l' opción:

    #!/usr/bin/env Bash FileName = myFile.txt # verificar si el archivo tiene alguna línea si [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty" else echo "File $FILENAME is not empty" fi
    12345678910#!/usr/bin/env Bash FileName = myFile.txt # verifique si el archivo tiene alguna línea [$ (wc -l < "$FILENAME") -eq 0 ]; then echo "File $FILENAME is empty"else echo "File $FILENAME is not empty"fi

    Esto pasará el contenido del archivo al 'WC' comando como entrada estándar y el '-l' La opción contará el número de líneas. Si el número de líneas es cero, el archivo se considera vacío.

  5. Usando el comando GREP
  6. El 'Grep' El comando es una herramienta poderosa para buscar y procesar archivos de texto. Para verificar si un archivo está vacío con GREP, puede usar el '-q' Opción, que hace que Grep se ejecute en silencio y devuelva un código de salida:

    #!/usr/bin/env Bash FileName = myFile.txt si grep -q . "$ Nombre de archivo"; entonces echo "el archivo no está vacío" el más de lo contrario "el archivo está vacío" FI
    123456789#!/usr/bin/env Bash FileName = myFile.txt si grep -q . "$ Nombre de archivo"; entonces echo "el archivo no está vacío" el más de lo contrario "el archivo está vacío" FI

    Esto buscará en el archivo cualquier personaje (. es una expresión regular que coincide con cualquier carácter) y devuelve un código de salida cero si se encuentra una coincidencia, o un código de salida no cero si el archivo está vacío.

    Usando el comando buscar

    El 'encontrar' El comando es una utilidad para buscar y procesar archivos y directorios. Para verificar si un archivo está vacío usando Find, puede usar la opción -Epty, que coincide con los archivos que están vacíos:

    #!/usr/bin/env Bash FileName = myFile.txt si se encuentra . -escriba f -empt -name "$ nombre de archivo"; entonces echo "archivo es vacío" el más eco "el archivo no está vacío" FI
    12345678#!/usr/bin/env Bash FileName = myFile.txtif encontrar . -escriba f -empt -name "$ nombre de archivo"; entonces echo "archivo es vacío" el más eco "el archivo no está vacío" FI

    Esto buscará el directorio actual (.) para archivos (-Tipo F) que están vacíos (-vacío) y tener el nombre "mi archivo.TXT" (-name "myfile.TXT"). Si se encuentra una coincidencia, el comando buscar devolverá un código de salida cero, lo que indica que el archivo está vacío. Si no se encuentra una coincidencia, el comando encontrar devolverá un código de salida distinto de cero, lo que indica que el archivo no está vacío.

    Usando el comando stat

    El 'estadística' El comando es una utilidad para mostrar información sobre archivos y sistemas de archivos. Para verificar si un archivo está vacío usando STAT, puede usar la opción -c para mostrar el tamaño del archivo en bytes:

    #!/usr/bin/env Bash FileName = myFile.txt if [$ (stat -c %s "$ nombre de archivo") -eq 0]; entonces echo "archivo es vacío" el más eco "el archivo no está vacío" FI
    12345678#!/usr/bin/env Bash FileName = myFile.txtif [$ (stat -c %s "$ nombre de archivo") -eq 0]; entonces echo "archivo es vacío" el más eco "el archivo no está vacío" FI

    Esto pasará el tamaño del archivo al '[' comando, que lo comparará con cero. Si el tamaño es cero, el archivo se considera vacío. Si el tamaño no es cero, el archivo se considera no vacío.

Espero que estos ejemplos le hayan dado una buena comprensión de las diferentes formas de verificar si un archivo está vacío en Bash. Como puede ver, hay muchos enfoques diferentes para elegir, y el mejor dependerá de sus necesidades específicas y las herramientas disponibles en su sistema.