Un find -exec
réponse est un bon, mais il souffre de la lacune généralement non pertinente qu'il crée un sous-processus distinct pour chaque fichier. Cependant, il est parfaitement fonctionnel et ne fonctionnera mal que lorsque le nombre de fichiers obtient vraiment grand. L'utilisation de xargs
permet de regrouper les noms de fichiers en grands groupes avant d'exécuter un sous-processus pour ce groupe de fichiers.
Vous devez juste faire attention à ce que, en utilisant xargs
, vous gériez correctement les noms de fichiers avec des espaces incorporés, des retours à la ligne ou d'autres caractères spéciaux.
Une solution qui permet de résoudre ces deux problèmes est (en supposant que vous avez une assez bonne find
et xargs
mise en œuvre):
find . -type f -print0 | xargs -0 chmod 644
Les -print0
les causes find
d'annuler les noms de fichiers sur son flux de sortie avec un caractère NUL (plutôt que d'un espace) et le -0
à xargs
lui fait savoir qu'il devrait s'attendre à ce que le format d'entrée.
Cela devrait être demandé à ServerFault – MoshiBin
chmod devrait vraiment être en mesure de faire la différence entre les fichiers, des liens et des dossiers sur son propre. – Xeoncross