[Unix Cshell] parcourir tous les fichiers

parcourir tous les fichiers [Unix Cshell] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 07-02-2007 à 08:26:47    

Bonjour,
 
J'ecris un script qui doit parcourir tous les fichier et répertoire du répertoire que je lui passe en paramètre.
Cela fonctionne mais lorsqu'il y a un nom de fichier avec un espace comme : "Nouveau fichier",  ma boucle va traiter "Nouveau" et "fichier" comme 2 fichiers différents...
Ce qui est logique mais je ne vois pas comment je pourrais faire pour qu'il traite le fichier comme il faut...
 
Voici ma boucle :
 

Code :
  1. foreach fich (`ls $1`)
  2.   echo $fich
  3. end


 
Quelqu'un aurait une idée?   :??:  
 
Merci  :jap:

Reply

Marsh Posté le 07-02-2007 à 08:26:47   

Reply

Marsh Posté le 07-02-2007 à 09:02:57    

Je connais pas cshell mais en bash ça donnerait pour que ça marche

Code :
  1. for fich in $1; do
  2.     echo $fich
  3. done



Message édité par wedgeant le 07-02-2007 à 09:03:05

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 07-02-2007 à 10:13:52    

utilise find


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 08-02-2007 à 12:54:23    

bonne idéé je vais essayer le find.
 

Reply

Marsh Posté le 08-02-2007 à 14:43:18    

use find luke [:neriki]

Reply

Marsh Posté le 10-02-2007 à 01:59:45    

C'etait juste un probleme de quote.
 
Ceci fonctionne :  
 
foreach fich ("'ls $1'" )
  echo $fich
end


Message édité par micsp24 le 11-02-2007 à 15:45:37
Reply

Marsh Posté le 10-02-2007 à 07:36:26    

[:pingouino]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 10-02-2007 à 12:29:51    


Traduction :
:heink: Heu ca sert à rien ton truc là, à part ralentir ls :heink:
:heink: "ls rep1 rep2 rep3" fait aussi bien l'affaire        :heink:

Reply

Marsh Posté le 11-02-2007 à 15:47:40    

arf je me suis tromper dans les quotes, ça marche comme ceci :
 
foreach fich ("`ls $1`" )
  echo $fich
end
 
c'est bizarre mais cela fonctionne, il gere bien les nom de fichiers avec des espaces...
 
Si je ne met pas les " ", cela bug avec les fichiers comprenant des espaces :s

Reply

Marsh Posté le 16-03-2007 à 16:09:27    

Clairement, find :
 
find /path | while read filepath
do
 echo $filepath
done
 
de plus find propose un paquet d'option interessantes

Reply

Sujets relatifs:

Leave a Replay

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