Actuellement, quand je veux changer de propriétaire/groupe récursivement, je fais ceci:
find . -type f -exec chown <owner>.<group> {} \;
find . -type d -exec chown <owner>.<group> {} \;
Mais cela peut prendre plusieurs minutes pour chaque commande. J'ai entendu dire qu'il y avait un moyen de le faire pour qu'il change tous les fichiers à la fois (beaucoup plus rapidement), au lieu d'un à la fois, mais je n'arrive pas à trouver les informations. Cela peut-il être fait?
Utilisez l'option récursive de chown
:
chown -R owner:group * .[^.]*
Spécification des deux *
et .[^.]*
correspondra à tous les fichiers et répertoires que find
ferait. Le séparateur recommandé de nos jours est :
au lieu de .
. (Comme indiqué par justins , en utilisant .*
n'est pas sûr car il peut être étendu pour inclure .
et ..
, ce qui entraîne chown
la modification de la propriété du répertoire parent et de tous ses sous-répertoires.)
Si vous souhaitez également modifier la propriété du répertoire actuel, cela peut être simplifié en
chown -R owner:group .
Pour les commandes comme chown
qui ont leur propre récursivité, il est plus rapide d'utiliser cette option:
chown -R owner:group * .[^.]*
Attention! Dans certains obus, la forme chown -R owner:group * .*
remplace le propriétaire dans le répertoire racine /. Parce que .*
veux dire ../../../../root, ../bin ... etc
. Tous les chemins. Cependant, le shell le plus utilisé, bash, ne s'applique pas .
et ..
, étendre les modèles.
Cependant, il est utile de savoir que le principal problème qui ralentit votre utilisation de find
est que vous appelez chmown
sur chaque répertoire et fichier trouvé. Il est beaucoup plus rapide à utiliser:
find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +
comme à chaque fois que chown
est appelé avec autant de paramètres que possible sur la ligne de commande.
Cette modification fonctionne pour d'autres commandes, qui n'ont pas non plus d'option de récursivité intégrée comme chown
. Et cela fonctionne (et améliore la vitesse) dans les situations où il existe une telle option de récursivité mais que vous ne pouvez pas l'utiliser (par exemple lorsque vous utilisez chmod
, et que vous souhaitez uniquement modifier les répertoires).