Linux: Saber si existe un directorio o fichero
Tabla de contenido:
- Comprobar si el archivo existe
- Compruebe si existe el directorio
- Compruebe si el archivo no existe
- Compruebe si existen varios archivos
- Operadores de prueba de archivos
- Conclusión
Muchas veces al escribir scripts de Shell, puede encontrarse en una situación en la que necesita realizar una acción en función de si un archivo existe o no.
En Bash, puede usar el comando de prueba para verificar si existe un archivo y determinar el tipo de archivo.
El comando de prueba toma una de las siguientes formas de sintaxis:
Comprobar si el archivo existe
Al verificar si existe un archivo, los operadores de ARCHIVO más utilizados son
-e
y
-f
. El primero verificará si existe un archivo independientemente del tipo, mientras que el segundo devolverá verdadero solo si el ARCHIVO es un archivo normal (no un directorio o un dispositivo).
La opción más legible cuando se verifica si un archivo existe o no es usar el comando de prueba en combinación con la instrucción if. Cualquiera de los fragmentos a continuación verificará si existe el archivo
/etc/resolv.conf
:
FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi
Si desea realizar una acción diferente en función de si el archivo existe o no, simplemente use la construcción if / then:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Utilice siempre comillas dobles para evitar problemas al tratar con archivos que contienen espacios en blanco en sus nombres.
También puede usar el comando de prueba sin la instrucción if. El comando después del operador
&&
solo se ejecutará si el estado de salida del comando de prueba es verdadero,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
Frente a
&&
, la declaración después de
||
El operador solo se ejecutará si el estado de salida del comando de prueba es
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Compruebe si existe el directorio
Los operadores
-d
permiten probar si un archivo es un directorio o no.
Por ejemplo, para verificar si existe el directorio
/etc/docker
, usaría:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
También puede usar los corchetes dobles
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Compruebe si el archivo no existe
Al igual que muchos otros idiomas, la expresión de prueba se puede negar usando el
!
(signo de exclamación) lógico no operador:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
Lo mismo que arriba:
&& echo "$FILE does not exist"
Compruebe si existen varios archivos
En lugar de usar construcciones if / else complicadas anidadas, puede usar
-a
(o
&&
with
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Variantes equivalentes sin usar la instrucción IF:
&& echo "both files exist"
Operadores de prueba de archivos
El comando de prueba incluye los siguientes operadores de ARCHIVO que le permiten probar tipos particulares de archivos:
-
-b
FILE
: verdadero si el ARCHIVO existe y es un archivo especial de bloque.-c
FILE
: verdadero si el ARCHIVO existe y es un archivo de caracteres especial.-d
FILE
: verdadero si el ARCHIVO existe y es un directorio.-e
FILE
: verdadero si el ARCHIVO existe y es un archivo, independientemente del tipo (nodo, directorio, socket, etc.).-f
FILE
: verdadero si el ARCHIVO existe y es un archivo normal (no un directorio o dispositivo).-G
FILE
- Verdadero si el ARCHIVO existe y tiene el mismo grupo que el usuario que ejecuta el comando.-h
FILE
: verdadero si el ARCHIVO existe y es un enlace simbólico.-g
FILE
- Verdadero si el ARCHIVO existe y tiene establecido el indicador de grupo-id (sgid).-k
FILE
- Verdadero si el ARCHIVO existe y tiene un indicador de bit fijo establecido.-L
FILE
- Verdadero si el ARCHIVO existe y es un enlace simbólico.-O
FILE
: verdadero si el ARCHIVO existe y es propiedad del usuario que ejecuta el comando.-p
FILE
- Verdadero si el ARCHIVO existe y es una tubería.-r
FILE
: verdadero si el ARCHIVO existe y es legible.-S
FILE
- Verdadero si el ARCHIVO existe y es socket.-s
FILE
: verdadero si el ARCHIVO existe y tiene un tamaño distinto de cero.-u
FILE
- Verdadero si existe y se establece el indicador set-user-id (suid).-w
FILE
: verdadero si el ARCHIVO existe y se puede escribir.-x
FILE
: verdadero si el ARCHIVO existe y es ejecutable.
Conclusión
En esta guía, le mostramos cómo verificar si existe un archivo o directorio usando Bash.
terminal de bashBMP Wrap le permite ocultar archivos como imágenes BMP y enviar por correo electrónico cualquier tipo de archivo como archivo adjunto
Además de ocultar archivos dentro Archivos de imagen BMP, conversión de archivos para permitir que se envíen como archivos adjuntos de correo electrónico, BMP Wrap también se utiliza para cifrar archivos.
Importe el directorio de Windows y los detalles del archivo a la hoja de Excel
Aquí se explica cómo importar el directorio de Windows y los detalles del archivo a una hoja de Excel.
Cómo verificar si existe un archivo o directorio en python
Al escribir scripts de Python, es posible que desee realizar una determinada acción solo si existe un archivo o directorio o no. Por ejemplo, es posible que desee leer o escribir datos en un archivo de configuración o crear el archivo solo si ya no existe.