URL: https://linuxfr.org/forums/programmation-shell/posts/chown-r%C3%A9cursif-avec-exclusion-de-r%C3%A9pertoire Title: chown récursif avec exclusion de répertoire Authors: chboeuf Date: 2007年09月20日T12:34:54+02:00 Tags: Score: 0 Salut à tous ! J'aimerais faire un chown -R sur un répertoire en excluant un sous répertoire. Ex: [root@WW-NOITST08 miles]# ls -l ./MilesRoot total 1376 drwxrwxrwx 3 nlaccept nlaccept 12288 sep 19 14:47 batch drwxrwxrwx 3 nlaccept nlaccept 4096 sep 19 11:39 command drwxrwxrwx 8 nlaccept nlaccept 4096 sep 4 12:16 milesweb drwxrwxrwx 3 nlaccept nlaccept 4096 sep 4 12:16 policy drwxr-xr-x 1 root root 4096 sep 19 14:57 report --> chown -R --exclude report nlaccept:nlaccept ./MilesRoot Malheureusement, l'option exclude n'existe pas pour la commande chown. J'ai donc décidé de passer par un find + grep + xargs Affichage de l'arborescence: find ./MilesRoot -print --> OK Affichage de l'arborescence en excluant le dossier voulu: find ./MilesRoot -print | grep -v "report" --> OK Chown sur le résultat: find ./MilesRoot -print | grep -v "report" | xargs chown nlaccept:nlaccept --> NOK Cette dernière commande ne marche pas totalement car il me jette sur les fichiers contenant des caractères spéciaux (espaces, -, _, ...). L'utilisation de -print0 associée à xargs -0 permet de résoudre le problème. En effet la commande suivante marche correctement avec les fichiers contenant les caractères spéciaux: find ./MilesRoot -print0 | xargs -0 chown nlaccept:nlaccept Par contre, j'ai pas réussi à inclure le grep -v dans la chaine: find ./MilesRoot -print0 | xargs -0 grep -lv "report" ne fonctionnant pas comme je le voudrais (afficher le nom de tous les fichiers et répertoires sauf le répertoire "report" et ses fichiers) Résultat, ca marche pas :-) Une idée ? Sûrement ma syntaxe mais bon ... Merci d'avance.

AltStyle によって変換されたページ (->オリジナル) /