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 :
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 :
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 :
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 :
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 :
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 :
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 :
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