web-dev-qa-db-fra.com

bash trouver des répertoires

Je suis nouveau sur les scripts bash. J'essaye juste de faire un script qui va chercher dans un répertoire et faire écho aux noms de tous les sous-répertoires.

Le code est basé sur le script suivant (appelez-le isitadirectory.sh):

     #!/bin/bash

     if test -d $1
         then
                echo "$1"
     fi

donc dans la ligne de commande si je tape 

       $bash isitadirectory.sh somefilename 

Cela fera echo nomfichier, s'il s'agit d'un répertoire.

Mais je veux rechercher dans tous les fichiers du répertoire parent.

Donc, j'essaie de trouver un moyen de faire quelque chose comme 

           ls -l|isitadirectory.sh

Mais bien sûr, la commande ci-dessus ne fonctionne pas. Quelqu'un peut-il expliquer un bon script pour faire cela? 

20
user485498

Les lignes suivantes peuvent vous donner une idée de ce que vous demandez.

 #!/bin/bash 

 pour FILE dans `ls -l` 
 si test -d $ FILE 
 puis
 echo "$ FILE est un sous-répertoire ..." 
 fi 
 fait 

Vous pouvez jeter un coup d'œil à la boucle bash 'for'.

4
Learner
find . -mindepth 1 -maxdepth 1 -type d
51

Dans le cas particulier où vous recherchez un 1) répertoire dont vous connaissez le 2) nom, pourquoi ne pas essayer avec ceci

find . -name "octave" -type d
29
fiorentinoing

essayez d'utiliser 

find $path -type d?

pour le répertoire courant

find . -type d

8
zb'

Voici déjà beaucoup de solutions, donc uniquement pour le plaisir:

 file ./**/* | grep directory | sed 's/:.*//'
3
jm666
find ./path/to/directory -iname "test" -type d

J'ai trouvé cela très utile pour rechercher des noms de répertoire à l'aide de -iname pour les recherches insensibles à la casse. Où "test" est le terme recherché.

2
Jason Jewel

Pas sûr .. mais peut-être que vous devriez regarder la commande d'arbre. http://linux.die.net/man/1/tree

tree -L 2 -fi
0
Johan

Vous devez utiliser:

ls -lR | isitadirectory.sh

(paramètre -R est la récursivité)

0
Jan Marek