[Shell] Parcourir un dossier avec des fichiers ayant des espaces.

Parcourir un dossier avec des fichiers ayant des espaces. [Shell] - Shell/Batch - Programmation

Marsh Posté le 17-12-2003 à 23:06:00    

Je voudrait parcourir un dossier mais celui-ci contient des fichiers avec des espaces dans leurs noms.
 
J'utilise ce code, en étant placé dans le dossier adéquat:

Code :
  1. for i in $(echo *)
  2.   do
  3.   traitement du fichier $i
  4. done


 
Imaginons que dans le dossier j'ai ces fichiers:
rouge
vert
« jaune orange »
 
« echo * » va retourner la liste de fichiers suivante:
rouge vert jaune orange
c'est-à-dire qu'avec cette exemple, je vient d'obtenir 4 fichiers au lieu de 3 et évidemment, ça déconne pour la suite  :whistle:  
 
Comment faire ?
 
 
Rmq: avec un ls à la place d'echo, c'est la même chose


Message édité par eL_Shaman___ le 17-12-2003 à 23:07:11
Reply

Marsh Posté le 17-12-2003 à 23:06:00   

Reply

Marsh Posté le 17-12-2003 à 23:25:11    

$(echo *)
 
 
[:rofl]
 
 
question posée 100x
 
find -print0 | xargs -0
 
ou alors tu passes avec un vrai langage genre python (os.walk()) ou perl

Reply

Marsh Posté le 18-12-2003 à 00:17:42    

Taz a écrit :

$(echo *)
 
 
[:rofl]
 


Je ne vois pas ce qu'il y a de si marrant :??:
Un $(ls) ou `ls` aurait été plus joli ?
Où est la grosse erreur ?
 
Et je n'arrive pas à intégrer ta solution à la commande for ou à stocker son résultat dans une variable par exemple.
 

Taz a écrit :


ou alors tu passes avec un vrai langage genre python (os.walk()) ou perl


Vu que ça me paraît être un truc de base dans la programmation shell, je me vois mal lacher ce problème :/
Sur le net, je n'ai vu que des usages de `ls`.

Reply

Marsh Posté le 18-12-2003 à 00:30:13    

1) ben for i in * tout simplement
2) oui c un problème à la con, la seule façon c'est d'employer un drapeu de fin de chaine comme '\0'. find sait imprimer avec ce format, xargs le lire. sinon les autres noms. après c'est la merde avec les espaces dans tous les sens,

Reply

Marsh Posté le 18-12-2003 à 00:40:08    

Merci pour le for, je compliquais vraiment pour rien...
 
Bon et pour ce script, ça me gonfle, ça va se finir en Perl.

Reply

Marsh Posté le 18-12-2003 à 01:01:49    

fait le en perl

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed