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?
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'.
find . -mindepth 1 -maxdepth 1 -type d
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
essayez d'utiliser
find $path -type d
?
pour le répertoire courant
find . -type d
Voici déjà beaucoup de solutions, donc uniquement pour le plaisir:
file ./**/* | grep directory | sed 's/:.*//'
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é.
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
Vous devez utiliser:
ls -lR | isitadirectory.sh
(paramètre -R est la récursivité)