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

28

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

Solución: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨

studiohack
fuente
44
Así que márquelo como la solución.
BlueRaja - Danny Pflughoeft

Respuestas:

40
$ if test -d /the/dir; then echo "exist"; fi 
Stefano Borini
fuente
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
Brian Showalter
fuente
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"

fuente
¿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.

Steve Emmerson
fuente
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.

Ejaz
fuente
[-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 ....]

roval
fuente
¡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