Bash Scripting: cómo verificar si el archivo existe

En este artículo, escribiremos un script bash para verificar si existen archivos o no. 

Sintaxis:

  • prueba [expresión]
  • [ expresión ]
  • [[ expresión ]]

Aquí, en expresión, escribimos el parámetro y el nombre del archivo . Veamos algunos parámetros que se pueden utilizar en la expresión: –

  • f:  Devuelve True si el archivo existe como un archivo común (regular).
  • -d : devuelve True si existe el directorio.
  • -e : Devuelve True si existe algún tipo de archivo.
  • -c : Devuelve True si el archivo de caracteres existe.
  • -r : Devuelve True si existe un archivo legible.
  • w : Devuelve True si existe un archivo grabable .
  • -x : Devuelve True si existe un archivo ejecutable.
  • -p : devuelve True si el archivo existe como una canalización.
  • -S : Devuelve True si el archivo existe como socket.
  • -s : devuelve True si existe un archivo y el tamaño del archivo no es cero.
  • -L : Devuelve True si existe el archivo de enlace simbólico .
  • -g : devuelve True si el archivo existe y se establece el indicador de id de grupo de retención.
  • -G : devuelve True si el archivo existe y tiene el mismo ID de grupo que está en proceso.
  •  -k : Devuelve True si el archivo existe y se establece el indicador de bits persistentes.

Ahora, hay algunos parámetros más para la comparación entre los dos archivos.

  • -ef: Devuelve True si ambos archivos existen e indican el mismo archivo. 

Ejemplo : 

FirstFile -ef SecondFile
  • -nt: Devuelve True si FirstFile es más nuevo que Secondfile.

Ejemplo :

FirstFile -nt FileOld
  • -ot: Devuelve True si FirstFile es anterior a SecondFile.

Ejemplo: 

FirstFile -ot SecondFile

Tomemos algunos ejemplos basados ​​en la sintaxis:

  • [expresión]: Primero, cree un archivo llamado «FirstFile.sh» y escriba el siguiente script en él
#!/bin/bash

# using [ expression ] syntax and in place 
# of File.txt you can write your file name 
if [ -f "File.txt" ]; 
then

# if file exist the it will be printed 
echo "File is exist"
else

# is it is not exist then it will be printed
echo "File is not exist"
fi

Ahora guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh

Producción : 

Producción

Nota: Como el «Archivo.txt» está presente en el sistema. Entonces, imprimió «El archivo existe».

  • prueba [expresión]: ahora, modifique el script anterior en «FirstFile.sh» de la siguiente manera
#!/bin/bash

# using test expression syntax and in place 
# of File2.txt you can write your file name
if test -f "File2.txt" ;
then

# if file exist the it will be printed 
echo "File is exist"
else

# is it is not exist then it will be printed
echo "File is not exist"
fi

Ahora, nuevamente guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh

Producción :

Producción

Nota: Como el «Archivo2.txt» no está presente en el sistema. Entonces, imprimió «El archivo no existe».

  • [[ expresión ]]: Nuevamente modifique la secuencia de comandos anterior en «FirstFile.sh» de la siguiente manera
#!/bin/bash

# using [[ expression ]] syntax and in place 
# of File3.txt you can write your file name
if test -f "File3.txt" ;
then

# if file exist the it will be printed 
echo "File is exist"
else

# is it is not exist then it will be printed
echo "File is not exist"
fi

Ahora, nuevamente guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh

Producción :

Producción

Nota: Como el «File3.txt» está presente en el sistema. Entonces, imprimió «El archivo existe».

Veamos un ejemplo basado en parámetros:

  • Usando el parámetro -d: cree un archivo llamado «FirstDir.sh» y escriba el siguiente script en él
!/bin/bash
if [[ -d "GFG_dir" ]] ; # Here GFG_dir
 is directory and in place of GFG_dir you can write your Directory name
then
echo "Directory is exist" # If GFG_dir exist then it will be printed
else
echo "Directory is not exist" # If GFG_dir is not exist then it will be printed
fi

Ahora guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./FirstDir.sh
$ ./FirstDir.sh

Producción :

Producción

Nota: Como el «GFG_dir» está presente en el sistema. Entonces, imprimió «Directorio existe».

Del mismo modo, puede usar -f , -e , -w , -r , -c , etc. (según sus usos) en lugar de -d para verificar la existencia de diferentes tipos de archivos.

Veamos un ejemplo basado en una comparación de dos archivos:

  • Usando el parámetro -nt

Cree un nombre de archivo «Comparison_File.sh» y escriba el siguiente script 

#!/bin/bash

# New_file.txt and Old_File.txt are names of two files.
if [[ "New_File.txt" -nt  "Old_File.txt" ]] ;
then

# This will be printed if Condition is true
echo "New_File.txt is newer than Old_File.txt" 
else

# This will be printed if Condition is False
echo "New_File.txt is not newer than Old_File.txt"
fi

Ahora guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./Comparison_File.sh
$ ./Comparison_File.sh

Producción :

Producción

Nota: Como ambos archivos están presentes en el sistema y «New_File.txt» es más nuevo que «Old_File.txt»

Veamos el ejemplo “Comprobar si el archivo no existe”:

Cree un archivo llamado «Check_Exist.sh» y escriba el siguiente script en él 

#!/bin/bash

# using ! before -f parameter to check if 
# file does not exist
if [[ ! -f "GFG.txt" ]] ;
then

# This will printed if condition is True
echo "File is not exist"
else

# This will be printed if condition if False
echo "File is exist"
fi

Ahora guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./Check_Exist.sh
$ ./Check_Exist.sh

Producción :

Producción

Nota:  «GFG.txt» no está presente en el sistema. Entonces, imprimirá «El archivo no existe»

Veamos un ejemplo sin usar la condición If-else:

Cree un archivo llamado «Geeks_File.sh» y escriba el siguiente script en él

#!/bin/bash

# If File exist then first statement will be
# printed and if it is not exist then 2nd
# statement will be printed.
[ -f "GFG_File.txt" ] && echo "File is exist" || echo "File is not exist"

Ahora guarde y ejecute el archivo usando el siguiente comando

$ chmod +x ./Geeks_File.sh
$ ./Geeks_File.sh

Producción : 

Producción

Nota: Como el «GFG_File.txt» está presente en el sistema. Entonces, imprimió «El archivo existe».

Publicación traducida automáticamente

Artículo escrito por thesahilrai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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