Comment vérifier si un répertoire existe en ligne de commande Linux?

28

Comment vérifier si un répertoire existe en ligne de commande Linux?

Solution: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨

studiohack
la source
4
Alors marquez-le comme la solution.
BlueRaja - Danny Pflughoeft

Réponses:

40
$ if test -d /the/dir; then echo "exist"; fi 
Stefano Borini
la source
J'en ai besoin en ligne de commande, pas dans un script.
5
C'est la ligne de commande. Vous pouvez taper cela dans bash directement, ou vous pouvez le reprendre à test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"mais ils sont vraiment les mêmes.
David Rodríguez - dribeas
La coquille de tout le monde ne l'est pas bash!
reinierpost
@reinierpost alors bonne chance à vous ...
Stefano Borini
@Stefano Borini: J'utilise toujours tcshparce que je suis trop paresseux pour réécrire mon .tcshrc. Mais plus précisément: cela aurait pu expliquer le problème du PO.
reinierpost
11

En supposant que votre shell est BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi
Brian Showalter
la source
erreur de syntaxe près du jeton inattendu «alors»
Ensuite, déterminez ce qu'est votre coquille. Peut csh- être ou tcsh?
reinierpost
8
[ -d /home/bla/ ] && echo "exits"

la source
Puis-je avoir quelque chose comme ELSE, pour afficher un texte même si le répertoire n'existe pas?
Solution:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop
7

La manière canonique est d'utiliser l'utilitaire test (1):

test -d path

où "chemin" est le chemin d'accès du répertoire en question.

Steve Emmerson
la source
La commande ne semble pas fonctionner seule, mais lorsqu'elle est associée à un echo "Directory Exists".
Ejaz
2

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

par exemple:

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

affichera: root dir.

Ejaz
la source
[-d: commande introuvable, voici ce que j'obtiens
Entre "[" et "-" DOIT être un espace. Cela devrait fonctionner sur Bourne et shell Bash.
0

Pour vérifier si un répertoire existe dans un script shell, vous pouvez utiliser ce qui suit:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

pour vérifier le contraire, ajoutez !avant-d ->[ ! -d ....]

roval
la source
Bienvenue sur Super User! Cela duplique une autre réponse et n'ajoute aucun nouveau contenu. Veuillez ne pas poster de réponse à moins que vous ayez réellement quelque chose de nouveau à apporter.
DavidPostill