Bash - Comprueba si un archivo o carpeta existe

Bash - Comprueba si existe un archivo o carpeta

¿Estás escribiendo un script Bash y necesitas comprobar si un archivo o carpeta existe realmente en tu máquina? Entonces este artículo orientado a Linux debería interesarte, ¡porque eso es exactamente lo que vamos a ver!

Sobre el mismo tema, ¡puedes leer este artículo y también navegar por el sitio! 😉

1. Comprobar si existe un archivo en Bash

Para empezar, vamos a ver los archivos, ya que vamos a ver comprobar si un archivo existe o no. Para ello, una condición "if" nos permitirá realizar esta prueba con bastante facilidad.

En este ejemplo, estamos comprobando la existencia del " /home/tutobox/mi-archivo.txt" almacenando esta ruta en la variable ARCHIVO. Luego, con una condición "if" y la condición "-f", puede realizar una acción sólo si el fichero existe. Aquí, escribimos en la consola "El archivo existe ()".

He aquí el resultado final:

#!/bin/bash
FILE=/home/tutobox/mi-archivo.txt

if [ -f "$FILE" ]; then
    echo "El fichero existe (1TP4FILE)"
fi

Un resultado pictórico (basado en otras trayectorias):

Comprueba si un archivo existe en Bash

En lugar de mostrar una simple frase, podría enviar una notificación por correo electrónico cuando se encuentre el archivo (por ejemplo, para comprobar que hay un archivo de copia de seguridad).

#!/bin/bash
FILE=/home/tutobox/mi-archivo.txt

if [ -f "$FICHIER" ]; then
    echo "Copia de seguridad correcta" | mail -s "OK - Copia de seguridad correcta" destinataire@tutobox.fr -aFrom:expediteur@domaine.fr
fi

Se trata de configurar un agente en la máquina local para que pueda enviar correos electrónicos. Algunos ejemplos son MSMTP y Postfix.

Para ir más lejos, puede añadir una condición "else" para actuar si el fichero no existe. Por ejemplo, si el fichero no existe, puede crearlo con el comando "touch". También en este caso se utiliza la variable FILE. Se obtiene :

#!/bin/bash
FILE=/home/tutobox/mi-archivo.txt

if [ -f "$FILE" ]; then
    echo "El fichero existe (1TP4FILE)"
else
    echo "El archivo no existe (1TP4FILE). Se creará".
    tocar 1TP4FILE
fi

Para su información, también podría utilizar el comando "test" explícitamente. La sintaxis sería entonces :

#!/bin/bash
FILE=/home/tutobox/mi-archivo.txt

if test -f "$FICHIER"; then
    echo "El fichero existe (1TP4FICHERO)"
fi

Por supuesto, este fragmento de código debe escribirse en un archivo ".sh" utilizando el editor de texto nano (u otro editor como vi), por ejemplo "fichier.sh", al que habrá que dar derechos de ejecución antes de poder ejecutarlo:

chmod +x archivo.sh

Luego, para ejecutarlo :

./archivo.sh

2. Compruebe si existe una carpeta en Bash

Para comprobar si un fichero existe o noPodemos repetir el ejemplo anterior, ¡excepto que vamos a ajustar la condición! En lugar de utilizar la condición "-f" para los ficheros, utilizaremos la condición "-d" para las carpetas. Por lo demás, el principio sigue siendo el mismo.

En el siguiente script, la variable FILE se utiliza para determinar la ruta completa a la carpeta que se va a comprobar. A continuación, se utiliza una condición "if/else" para indicar la acción a realizar si existe y la acción a realizar si no existe. Si no existe, se creará con mkdir. En ambos casos, se escribe un mensaje informativo en el shell de Linux:

#!/bin/bash
DOSSIER=/home/tutobox/dossier

if [ -d "$DOSSIER" ]; then
    echo "La carpeta existe ($DOSSIER)"
else
    echo "La carpeta no existe ($DOSSIER). Se creará".
    mkdir $DOSSIER
fi

Una vez más, es necesario crear el script. Por ejemplo, el script "dossier.sh" para este caso:

nano dossier.sh

Incluya el código anterior en el archivo de script "dossier.sh", adaptando la ruta de la carpeta a comprobar, y posiblemente añadiendo otras acciones dependiendo del propósito de su script. Guarde el archivo.

Añade derechos de ejecución al archivo "dossier.sh", de lo contrario no podremos ejecutarlo en la máquina local:

chmod +x dossier.sh

A continuación, ejecute este script para probarlo:

./carpeta.sh

3. Comprobar si un archivo no existe en Bash

También puede intentar hacer lo contrario y realizar una acción si el archivo (o carpeta) no existe. En este caso, debe invertir la condición con el carácter "!". He aquí un ejemplo basado en lo que vimos anteriormente:

#!/bin/bash
FILE=/home/tutobox/mi-archivo.txt

si [ ! -f "$FICHIER" ]; entonces
    echo "El fichero no existe (1TP4FILE)"
fi

Se reduce a un carácter 😉

4. Conclusión

Gracias a este artículo de la caja de tutoriales de informática, podrás comprobar si un archivo o carpeta existe, o no existe, en un script de Bash en Linux.

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *