Comment appliquer récursivement les répertoires chmod sans affecter les fichiers?


18

Après avoir appliqué chmod -Rà un répertoire, les autorisations sont modifiées pour tout ce qu'il contient (fichiers et répertoires). Comment puis-je ajouter des xautorisations d' exécution / recherche ( ) aux répertoires sans modifier les fichiers?

Réponses:


13

Vous pouvez utiliser find .

find ./ -type d -execdir chmod 750 {} +

Où 750 est le mode que vous souhaitez appliquer et "./" est le répertoire que vous rechercherez récursivement.

EDIT : Merci à @Gilles et find (1) , j'ai révisé cela pour plus de sécurité et de performances.


@Gilles Merci, il n'est pas trop fréquent que j'apprenne quelque chose de nouveau sur les outils Unix :-) C'est génial. De plus, en lisant maintenant la documentation de recherche , il faut vraiment utiliser -execdir à la place.
ewindisch

7

Dans ce cas particulier, vous pouvez utiliser à la Xplace de xqui n'ajoute que les bits aux répertoires ou fichiers qui ont déjà le bit exécutable défini pour certains utilisateurs (c'est-à-dire chmod -R +X my_dir).

En général (par exemple, si vous souhaitez rendre tous les répertoires lisibles sans affecter les fichiers), vous pouvez utiliser findavec -type dou si vous utilisez zsh (ou bash 4 avec shopt -s globstar) le **/glob (les deux sans passer le -Rdrapeau à chmod).


@ Gilles: Bon point, j'ai ajouté cela à la réponse.
sepp2k

1
"utilisez X au lieu de x qui n'ajoute que les bits aux répertoires ou fichiers qui ont déjà le bit exécutable défini pour un utilisateur" - Merci! J'ai raté beaucoup cette chose!
Ivan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.