for i in `find $1` enregistrer les mots avec espaces ? - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 17-09-2004 à 18:27:04
met des " " autour de ta variable. colle ton script ici ca sera plus clair
j'ai pas trop compris la fin du post
Marsh Posté le 17-09-2004 à 19:06:53
oui j'avoue que je n'ai pas été très clair. J'ai reformulé mes explications. J'espere que j'ai été plus compréhensible.
J'ai posté le script.
S'il y a un passage que vous ne comprenez pas trop, n'hesitez pas à me quoter pour que je vous reexplique.
Marsh Posté le 17-09-2004 à 19:58:04
essaie deja avec ca : for i in $(find $1 -exec echo "{}" \
je regarde la reste plus tard
edit: je pige pas trop ta boucle.
find . -exec echo destination avant "{}" \; |
serait pas plus logique ?
Marsh Posté le 17-09-2004 à 22:57:31
Dans le repertoire /home/alex/Documents/prog/nico/, j'ai entre autre mon srv comme repertoire.
Code :
|
et bien quand je fais :
Code :
|
Code :
|
avec comme tu dis :
Code :
|
ce n'est pas malheuresement toujours pas. Le chemin complet n'est pas enregistré mais est coupé en 2.
Marsh Posté le 17-09-2004 à 23:00:02
find . -exec echo destination avant "{}" \;
ca marche ca. je vois pas l'interet de la boucle
Marsh Posté le 17-09-2004 à 23:02:03
Zaib3k a écrit :
serait pas plus logique ? |
"le destination avant", c'est juste pour tester.
Je veux juste pour l'instant enregistrer dans une variable $desti enregistrer tout les fichier (et repertoire) avec leurs chemins complets du repertoire $1 que l'on passe en argument.
Marsh Posté le 17-09-2004 à 23:03:47
ok, et tu ne veux pas passer par un fichier intermediaire ?
Marsh Posté le 17-09-2004 à 23:04:44
for i in $(find . ); do echo "lalala $i"; done;
ca marche ca.
Marsh Posté le 17-09-2004 à 23:22:15
Zaib3k a écrit : for i in $(find . ); do echo "lalala $i"; done; |
non ca marche.
dans une console créé toi un repertoire avec un espace. Et bien tu verra que ton repertoire ne sera pas sur la meme ligne.
par contre j'ai trouvé. Il ne faut pas mettre le find directement dans le for.
Code :
|
et j'obtiens enfin ca :
Code :
|
Tu me demandes pas à quoi sert ma boucle, mais je t'ai dis que c'etait un début de mon programme. Je faire des stats pour relever les permissions, group et owner et je vais les copié sur ma sauvegarde.
le for va me permettre de traiter chaque variable de $desti.
Marsh Posté le 18-09-2004 à 12:12:23
ok
content que ca marche. par contre pour faire une copie des permissions je sens que tu vas en chier. si tu y arrives tu pourrais poster ton script ici ?, ca m'interesse.
Marsh Posté le 17-09-2004 à 17:08:25
voila avec mon find je liste tout les fichiers avec leurs chemin à partir de $1.
mais des qu'il y a un espace cela ne fonctionne plus :
j'ai donc rajouté un -exec echo \'{}\' \;` pour rajouter des simples quotes entre chaque entre chaque mots trouvés. Dans mon cas ca serait chemin+fichier. J'esperais avec les ' que ce soit considéré comme un seul mot avec la boucle for.
voila mon script :
et voila ce que cela me donne à cause de l'espace malgré les ' ' :
alors que j'aimerais avoir ceci :
pour que la variable $i soit exploitable.
Coment faire pour que ce soit pris en compte ?
PS : ceci n'est qu'un debut de mon script. Je vous explique ce que j'aimerai faire ca peut etre aider.
Lorsque j'ai fais ma sauvegarde de mon système ave tar, j'ai oublié de sauvegardé mes droits. Et donc j'aimerais bien les restaurer. Mon système actuel est bancal mais possède les bonnes permissions. J'aimerais donc copié les permissions de mon système actuel sur ma sauvegarde.
j'aimerais donc que lorsque lance mon script
[root@localhost Documents]#./droit /home/weed/sauvegarde /
ca faffase ceci :
/ ----copie (permission, owner, group) --> /home/weed/sauvegarde
Message édité par weed le 17-09-2004 à 22:34:43