¿Cómo verificar si existe un directorio en la línea de comandos de Linux?


Respuestas:


40
$ if test -d /the/dir; then echo "exist"; fi 

Lo necesito en la línea de comandos, no en un script.

55
Esa es la línea de comando. Puede escribir eso en bash directamente, o puede reanudarlo en test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"pero son realmente lo mismo.
David Rodríguez - dribeas

¡No es el caparazón de todos bash!
reinierpost

@reinierpost entonces buena suerte ...
Stefano Borini

@Stefano Borini: Todavía lo uso tcshporque soy demasiado vago para volver a escribir mi .tcshrc. Pero más importante: esto podría haber explicado el problema del OP.
reinierpost

11

Asumiendo que su caparazón es BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi

error de sintaxis cerca de token inesperado `entonces '

Luego averigua cuál es tu caparazón. Quizás csho tcsh?
reinierpost

8
[ -d /home/bla/ ] && echo "exits"

¿Puedo tener algo como ELSE para mostrar un texto incluso si el directorio no existe?

Solución alternativa:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop

7

La forma canónica es usar la utilidad test (1):

test -d path

donde "ruta" es la ruta del directorio en cuestión.


El comando no parece estar funcionando solo, pero cuando se une con un echo "Directory Exists".
Ejaz

2

[ -d "YOUR_DIR" ] && echo "is a dir"

p.ej:

[ -d / ] && echo "root dir"

es la salida: root dir.


[-d: comando no encontrado esto es lo que obtengo

Entre "[" y "-" DEBE haber un espacio. Esto debería funcionar en el shell Bourne y Bash.

0

Para verificar si existe un directorio en un script de shell, puede usar lo siguiente:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

para verificar lo contrario, agregue !antes de-d ->[ ! -d ....]


¡Bienvenido a Super User! Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.