je cherche =C3=A0 effectuer un changement de propri=C3=A9taire de mani=C3=
=A8re
r=C3=A9cursive sur l'arborescence du r=C3=A9pertoire courant.
1) la commande find est mon ami puisque :
$>find . -type d me retourne :
.
./rep1
./rep1/subrep1
./rep1/subrep2/subsubrep
2) fort de ce constat, je souhaite renvoyer via un pipe cette sortie
vers la commande chmod
l=C3=A0 je coince, chmod attend un argument contrairement =C3=A0 un b=C3=AA=
te
$>ls -al | more=20
Certes, "more" ici est le pager prenant en compte la totalit=C3=A9 du
r=C3=A9sultat de la commande ls.
Dans mon cas, et pour chaque r=C3=A9sultat je dois effectuer une action
chmod.
Je ne souhaite pas obtenir la commande ou le script fonctionnel de
votre part.
Juste une explication :
comment dois-je transmetre chaque r=C3=A9sultat du pipe en argument =C3=A0 =
chmod ?
Apr=C3=A8s lecture pas tr=C3=A8s bien comprise des commandes group=C3=A9es =
au sein d'un
m=C3=AAme shell via {} je ne sais, si c'est une piste pour ma probl=C3=A9ma=
tique,
ni comment l'impl=C3=A9menter.
je cherche à effectuer un changement de propriétaire de manière récursive sur l'arborescence du répertoire courant.
option -R ?
Paul Gaborit
À (at) Tue, 20 Dec 2011 13:39:36 +0100, Olivier Burelli écrivait (wrote):
j'ai oublié de préciser que je me suis penché sur :
for i in `find . -type d`; do chmod 0770 $i; done
cela fonctionne, je reste interrogatif, je cherchais à obtenir le résultat en utilisant un pipe.
Voir même savoir qu'elle est l'état de l'art :p
La commande chmod possède déjà un mode récursif (l'option -R).
Pour appliquer une commande à *chaque* résultat trouvé par 'find', il vaut mieux utilisé l'option '-exec' :
find . -type d -exec chmod 0770 '{}' ;
(c'est la syntaxe d'un find à la linux.)
Si on souhaite appliquer une commande à plusieurs résultats d'un coup, on peut utiliser :
find . -type d -exec chmod 0770 '{}' +
(toujours la syntaxe d'un find à la linux.)
Pour utiliser un pipe, il faut faire attention aux noms contenant des espaces et donc utiliser l'option '-print0' de find puis récupérer tout cela avec xargs et son option '-0' pour construire une ligne de commande pas trop longue.
À (at) Tue, 20 Dec 2011 13:39:36 +0100,
Olivier Burelli <olivier@burelli.fr> écrivait (wrote):
j'ai oublié de préciser que je me suis penché sur :
for i in `find . -type d`;
do
chmod 0770 $i;
done
cela fonctionne, je reste interrogatif, je cherchais à obtenir le
résultat en utilisant un pipe.
Voir même savoir qu'elle est l'état de l'art :p
La commande chmod possède déjà un mode récursif (l'option -R).
Pour appliquer une commande à *chaque* résultat trouvé par 'find', il
vaut mieux utilisé l'option '-exec' :
find . -type d -exec chmod 0770 '{}' ;
(c'est la syntaxe d'un find à la linux.)
Si on souhaite appliquer une commande à plusieurs résultats d'un coup,
on peut utiliser :
find . -type d -exec chmod 0770 '{}' +
(toujours la syntaxe d'un find à la linux.)
Pour utiliser un pipe, il faut faire attention aux noms contenant des
espaces et donc utiliser l'option '-print0' de find puis récupérer tout
cela avec xargs et son option '-0' pour construire une ligne de commande
pas trop longue.
find . -type d -print0 | xargs -0 chmod 0770
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
À (at) Tue, 20 Dec 2011 13:39:36 +0100, Olivier Burelli écrivait (wrote):
j'ai oublié de préciser que je me suis penché sur :
for i in `find . -type d`; do chmod 0770 $i; done
cela fonctionne, je reste interrogatif, je cherchais à obtenir le résultat en utilisant un pipe.
Voir même savoir qu'elle est l'état de l'art :p
La commande chmod possède déjà un mode récursif (l'option -R).
Pour appliquer une commande à *chaque* résultat trouvé par 'find', il vaut mieux utilisé l'option '-exec' :
find . -type d -exec chmod 0770 '{}' ;
(c'est la syntaxe d'un find à la linux.)
Si on souhaite appliquer une commande à plusieurs résultats d'un coup, on peut utiliser :
find . -type d -exec chmod 0770 '{}' +
(toujours la syntaxe d'un find à la linux.)
Pour utiliser un pipe, il faut faire attention aux noms contenant des espaces et donc utiliser l'option '-print0' de find puis récupérer tout cela avec xargs et son option '-0' pour construire une ligne de commande pas trop longue.