GNU/Linux >> Tutoriales Linux >  >> Linux

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

Introducción

Hay varias funciones en Linux que solo funcionan si existe un archivo o directorio en particular. Bash es un shell que interpreta comandos. Puedes usar un

En esta guía, aprenda a usar un comando bash para verificar si existe un archivo o directorio.

Requisitos previos

  • Un sistema operativo Linux
  • Acceso a una ventana de terminal/línea de comando (Ctrl-Alt-T / Ctrl-Alt-F2)

Cómo comprobar si existe un archivo

Para probar el archivo /tmp/test.log , ingrese lo siguiente desde la línea de comando:

test –f /tmp/test.txt

La primera línea ejecuta la prueba para ver si el archivo existe. El segundo comando, eco , muestra los resultados 0 significa que el archivo existe, 1 significa que no se encontró ningún archivo.

echo $?

En nuestro ejemplo, el resultado fue 1.

Ahora intenta crear un archivo y luego pruébalo:

touch /tmp/test.txt
test –f /tmp/test.txt
echo $?

Como hemos creado el archivo de antemano, el resultado ahora es 0:

También puede usar corchetes en lugar de la prueba comando:

[ –f /tmp/test.txt ]
echo $?

Cómo comprobar si existe un directorio

Para verificar si existe un directorio, cambie el –f opción en la prueba comando para –d (para directorio):

test –d /tmp/test
echo $?

Cree ese directorio y vuelva a ejecutar la prueba:

touch /tmp/test
test –d /tmp/test
echo $?

Este comando funciona igual que para los archivos, por lo que se usa corchetes en lugar de la prueba el comando también funciona aquí.

Cómo verificar si un archivo no existe

Normalmente, la prueba de un archivo devuelve 0 (verdadero) si el archivo existe y 1 (falso) si el archivo no existe. Para algunas operaciones, es posible que desee invertir la lógica. Es útil si escribe una secuencia de comandos para crear un archivo en particular solo si aún no existe.

Para crear un archivo si aún no existe, ingrese lo siguiente en una línea de comando:

[ ! –f /tmp/test.txt ] && touch /tmp/test.txt

El signo de exclamación ! significa no . Este comando se asegura de que no un archivo llamado test.txt en el /tmp directorio. No verás que suceda nada.

Para ver si el sistema creó el archivo, ingrese lo siguiente:

ls /tmp

Debería ver prueba.txt listado. Puede usar un comando similar para un directorio:reemplace el –f opción con –d :

[ ! –d /tmp/test ] && touch /tmp/test 

Cómo buscar varios archivos

Para probar dos archivos al mismo tiempo, utilice && opción para agregar un segundo archivo:

[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”

Para probar varios archivos con un comodín, como un asterisco * para representar varios caracteres:

[ -f /tmp/*.jpg ] && echo “Files were found”

Como de costumbre, cambiando la –f opción a –d le permite ejecutar la misma prueba para varios directorios.

Operadores de prueba de archivos para encontrar tipos particulares de archivos

Aquí hay varios comandos para probar y encontrar tipos específicos de archivos:

  • -f – archivo
  • -d – directorio
  • L – enlace simbólico
  • -r- legible
  • -x – ejecutable
  • w – escribible

Hay muchas otras opciones disponibles. Consulte la página principal (prueba ––ayuda) para obtener opciones adicionales.

Trabajar con fragmentos de código

Los comandos anteriores funcionan bien para un comando simple de dos líneas en un símbolo del sistema. También puedes usar bash con múltiples comandos. Cuando se unen varios comandos, se denominan script. .

Un guión generalmente se guarda como un archivo y se ejecuta. Las secuencias de comandos también usan operadores lógicos para probar una condición y luego toman medidas en función de los resultados de la prueba.

Para crear un archivo de secuencia de comandos, use el editor Nano para abrir un archivo nuevo:

sudo nano bashtest.sh

Ingrese uno de los fragmentos de abajo, incluido el #!/bin/bash identificador Utilice Ctrl-o para guardar el archivo, luego Ctrl-x para salir de Nano. Luego, ejecute el script ingresando:

bash bashtest.sh

El siguiente fragmento de código prueba la presencia de un archivo en particular. Si el archivo existe, la secuencia de comandos muestra El archivo existe en la pantalla.

#!/bin/bash

if [ -f /tmp/test.txt ]

then

echo “File exists”

fi

Esto funciona igual si está buscando un directorio. Simplemente reemplace el –f opción con –d :

#!/bin/bash

if [ -d /tmp/test ]

then 

echo “File exists”

fi

Este comando busca el directorio /tmp/test . Si existe, el sistema muestra El archivo existe .


Linux
  1. ¿Cómo puedo comprobar que existe un archivo y ejecutar un comando si no es así?

  2. ¿Cómo puedo comprobar si existe un directorio?

  3. ¿Cómo verificar si existe un archivo en un directorio específico en un script bash?

  4. Bash:¿No existe tal archivo o directorio?

  5. ¿Cómo puedo usar sudo para verificar si existe un archivo?

Ansible:comprobar si existe un archivo

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 usar operadores de prueba de archivos Bash en Linux

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

¿Cómo ejecutar un script bash?