Bash - Comprueba si un archivo o carpeta existe

¿Qué tenemos en la caja?
¿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):

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.