GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo verificar si existe un archivo o directorio en Bash Shell

Si está trabajando en un script de Bash que interactúa con archivos y directorios, es posible que se encuentre en una situación en la que necesite asegurarse de que el archivo o directorio existe. Esto ayuda a evitar posibles errores al realizar ciertas acciones en un archivo que no existe.

En este tutorial, le mostraré un par de formas de verificar si el archivo o directorio existe en el script bash o no. Comencemos con el archivo primero.

Comprobar si el archivo existe en bash script

La idea aquí es usar el operador -f que devuelve verdadero solo cuando es un archivo normal (no un directorio).

Digamos que desea verificar si el archivo /home/user/my_file existe o no. Así es como puede verificar con corchetes

#!/bin/bash
 
if [ -f /home/user/my_file ]
then
    echo "My file exists"
fi

Pero no siempre obtendrá el nombre del archivo de antemano, ¿verdad? Puede tenerlo en una variable y, si ese es el caso, puede usarlo de esta manera.

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Básicamente, lo que importa es la condición que usas en el comando if. Depende de usted cómo quiere usar la instrucción if.

Por ejemplo, puede escribirlo con dos corchetes, mantener 'entonces' en la misma línea que 'si' con la ayuda de un punto y coma como este:

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]; then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

o ponga la declaración completa así:

[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"

Comprobar que el archivo existe en bash con test

También puede usar la prueba en bash para ver si el archivo existe o no. Es más o menos lo mismo solo que no usa los corchetes en la declaración if:

#!/bin/bash

FILE=/home/user/my_file
 
if test -f "$FILE" 
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

También puede usar el código anterior en una sola línea como esta:

test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"

Comprobar si el archivo no existe en bash script

¿Qué sucede si es al revés y desea verificar si el archivo no existe en bash? Puede usar prácticamente el mismo código que el anterior usando el operador de negación:

#!/bin/bash

FILE=/home/user/my_file
 
if [ ! -f "$FILE" ]
then
    echo "My file doesn't exist"
fi

Ahora que sabe cómo manejar archivos, pasemos a los directorios.

Comprobar si el directorio existe en bash script

El código para verificar el directorio es el mismo que viste en la sección anterior. La única diferencia es que usará -d en lugar de -f. -d devuelve verdadero solo para directorios.

#!/bin/bash
 
if [ -d /home/user/my_dir ]
then
    echo "My directory exists"
fi

También puede usar la prueba aquí:

#!/bin/bash

DIR=/home/user/my_dir
 
if test -d "$DIR" 
then
    echo "My directory exists"
else 
    echo "My directory doesn't exist"
fi

Comprobar si el directorio no existe en bash

Puede usar la negación nuevamente para verificar si el directorio no existe:

#!/bin/bash

DIR=/home/user/my_dir
 
if [ ! -d "$DIR" ]
then
    echo "My directory doesn't exist"
fi

Eso es todo. Eso es todo lo que necesita hacer para verificar si existe un directorio de archivos en bash shell o no.

Espero que encuentre útil este consejo bash. Si tiene alguna pregunta o sugerencia, no dude en dejar un comentario a continuación.


Linux
  1. Cómo verificar la sintaxis de sudoers

  2. ¿Cómo verificar el progreso de la ejecución de Cp?

  3. ¿Cómo analizar un archivo CSV en Bash?

  4. ¿Cómo verificar syslog en Bash en Linux?

  5. ¿Cómo verificar si un archivo está vacío en Bash?

Cómo verificar si existe un archivo o directorio en Bash

Cómo verificar si existe un archivo o directorio en Bash

Cómo leer un archivo línea por línea en Bash

Cómo verificar si existe un comando de shell desde PHP

¿Cómo puedo comprobar si existe un directorio?

Bash:¿No existe tal archivo o directorio?