boucle sur des noms avec des espaces

Le
mpg
Bonjour,

Depuis qu'on m'a montré comment faire des boucles for avec un shell, je suis
tout content et j'en mets un peu à toutes les sauces (y compris en
interactif). Sauf que.

Je me suis rendu compte qu'il y avait des gros trous dans mon savoir tout
neuf en essayant de faire :
for i in `ls .`; do something-with $i; done;
dans un répertoire comportant plein de fichiers avec des espaces dans leur
nom vous vous doutez de ce qui arriva : pour chaque fichier 'a b' j'ai
eu droit à un
'"a" : aucun fichier de ce type'
'"b" : aucun fichier de ce type'
que j'avais au fond bien mérité.

Y a-t-il moyen de s'en sorti quand même ? Pour le moment, j'ai salement
renommé mes fichiers sans espaces, puis fait le truc, puis renommé avec,
mais ça ne me plaît pas trop Au cas où ça ferait une différence, je fais
ça avec zsh et la version GNU de ls, mais si il y a une façon standard de
le faire, ça m'intéresse aussi.

Merci d'avance !

Manuel.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
YBM
Le #123439
Bonjour,

Depuis qu'on m'a montré comment faire des boucles for avec un shell, je suis
tout content et j'en mets un peu à toutes les sauces (y compris en
interactif). Sauf que.

Je me suis rendu compte qu'il y avait des gros trous dans mon savoir tout
neuf en essayant de faire :
for i in `ls .`; do something-with $i; done;
dans un répertoire comportant plein de fichiers avec des espaces dans leur
nom... vous vous doutez de ce qui arriva : pour chaque fichier 'a b' j'ai
eu droit à un
'"a" : aucun fichier de ce type'
'"b" : aucun fichier de ce type'
que j'avais au fond bien mérité.

Y a-t-il moyen de s'en sorti quand même ?


for i in * ; do echo "$i"; done

les '"' autour de $i sont important aussi afin que la commande
exécutée reçoivent bien le fichier en argument et non deux (ou plus)
arguments.

mpg
Le #123438
Le (on) jeudi 27 décembre 2007 02:59, YBM a écrit (wrote) :

for i in `ls .`; do something-with $i; done;
[...]
Y a-t-il moyen de s'en sorti quand même ?


for i in * ; do echo "$i"; done

les '"' autour de $i sont important aussi afin que la commande
exécutée reçoivent bien le fichier en argument et non deux (ou plus)
arguments.


Oki, super ! En plus c'est plus facile à taper et tout. J'aurais pu y penser
en fait... En tout cas merci pour ta réponse rapide et efficace. Pour
le "$i", j'y avais pensé, mais comme avec mon `ls .` il y avait déjà un
problème en amont... Enfin ça au moins je comprends pourquoi ils sont
utiles.

Manuel.


Publicité
Poster une réponse
Anonyme