qu'est-ce qu'un caractère générique pour sélectionner tous les répertoires d'un répertoire

13

je veux mettre le bit collant pour tous les répertoires dans un répertoire à l'exclusion des fichiers. existe-t-il un joker pour le faire?

#sudo chmod g+s /var/www/<WILD_CARD_FOR_ALL_DIRECTORIES>
Necktwi
la source

Réponses:

24

Utilisez */pour faire correspondre uniquement les répertoires.

chmod g+s /var/www/*/

Pour faire correspondre tous les répertoires et sous-répertoires utilisés **/*/(à condition que vous les ayez globstaractivés dans bash):

shopt -s globstar
chmod g+s /var/www/**/*/
dogbane
la source
2
Fonctionne bien, mais s'arrête dès que la longueur de la ligne de commande étendue dépasse la limite de longueur de ligne de commande. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Bonsi Scott
1
oui, j'en suis bien conscient. Cependant, le PO a demandé un "caractère générique".
Dogbane
Ouais! J'ai demandé un caractère générique, merci.
Necktwi
je sais qu'il a demandé une solution générique. J'ai seulement souligné que cela échouerait dans certaines circonstances. Autre que cela, pas de critique à voir ici (j'ai commenté mais j'ai voté, car c'est une solution de travail pour la plupart des cas) ^^
Bonsi Scott
13

vous pouvez utiliser find, voir l'exemple ci-dessous

find /var/www/ -type d -exec chmod g+s {} \;
Rahul Patil
la source
3
C'est bien, mais pas un caractère générique, mais - mais il a l'avantage de ne pas échouer en raison de nombreux répertoires
Bonsi Scott
Notez que ceci est récursif par défaut. Si vous souhaitez uniquement que votre commande soit appliquée au niveau supérieur, vous pouvez utiliser l' -maxdepth findargument.
Kris Harper
0

Ce n'est PAS un caractère générique, donc je m'excuse pour une non-réponse, cependant ...
ls -al |grep ^d | awk '{print$NF}'listera tous les répertoires dans le répertoire courant, c'est à vous de décider si vous souhaitez les traiter .et / ..ou les supprimer.

echo $(ls -al |grep ^d | awk '{print$NF}') ne le fait se comporter comme un caractère générique

bsd
la source
Cela se cassera si vos fichiers ont des espaces blancs de début ou de fin, ou des retours à la ligne.
Chris Down