[Shell tcsh] [RESOLU] Récupération du path à partir du fichier

Récupération du path à partir du fichier [Shell tcsh] [RESOLU] - Shell/Batch - Programmation

Marsh Posté le 25-05-2004 à 10:42:34    

Bonjour,
 
J'ai un fichier avec son chemin :
 
/Toto/Exemple/Image/nuage.jpg
 
Je voudrais récupérer :
 
/Toto/Exemple/Image/
 
sans passer par un basename /Toto/Exemple/Image/nuage.jpg puis une autre instruction...
Bref, y'a-t-il une instruction simple qui permette de récupérer le chemin ?
 
Merci à tous !


Message édité par starius le 25-05-2004 à 12:15:03
Reply

Marsh Posté le 25-05-2004 à 10:42:34   

Reply

Marsh Posté le 25-05-2004 à 10:46:30    

sed s/[^/]*$//g
 
et ouala.

Reply

Marsh Posté le 25-05-2004 à 11:03:38    

Euh, merci, mais tu pourrais préciser ? Le nom du fichier est dans une variable ? Passé via un pipe ?
 
Dslé, je suis pas un pro du shell...

Reply

Marsh Posté le 25-05-2004 à 11:14:44    

pardon, argument passé par l'entrée standart
 
En gros : echo Toto/machin/truc/fichier.zob | sed /[^/]*$//
 
Pour la regex : [^/]*$ : un ensemble de caractères qui ne soient pas "/" en nombre indéterminé, à la fin de la chaîne.
 
et s/xxx/yyy/ : remplace xxx par yyy
 
voila.

Reply

Marsh Posté le 25-05-2004 à 11:31:29    

Merci :-) Mais il me met  
illegal variable name
 
C pas le $ qui lui plait pas ? J'ai essayé avec les " " mais ça marche pas non plus...
 
echo Raph/Script/Temp/log.txt | sed s/[^/]*$//g
 
ou
 
echo Raph/Script/Temp/log.txt | sed "s/[^/]*$//g"
 
Même message d'erreur...Une idée ? :-(

Reply

Marsh Posté le 25-05-2004 à 11:51:02    

Chez moi, les 2 marchent, mais je suis sous Cygwin, alors bon, c'est peut être pas super représentatif.
Sinon, il y a sans doute d'autres solutions avec cut, ou tail.

Reply

Marsh Posté le 25-05-2004 à 12:11:23    

Hop voila la soluce :)
testé sous SunOS :
 
echo "Raph/Script/Temp/log.txt" | sed 's/[^/]*$//g'
 
Il faut toujours mettre des '' autour des expressions régulières.
 
voilou

Reply

Marsh Posté le 25-05-2004 à 12:13:01    

Après moults recherches, il existe une commande pour cela :
 
dirname "Toto/fichier.txt"
 
Retourne
 
Toto
 
Merci pour ton aide gfive. N'empêche, j'aurais bien aimé le faire marcher ton sed :-)

Reply

Marsh Posté le 25-05-2004 à 12:44:35    

Houla, oui, y'avait dirname, mai sen lisant ton premier post "sans  passer par un basename..." j'ai compris dirname....
 
Pas malin inside! :D

Reply

Marsh Posté le 27-05-2004 à 04:52:41    

Puis si t'aimes pas dirname, tu peux faire ça en shell sans passer par sed :

home/nicolas% var=/Toto/Exemple/Image/nuage.jpg
home/nicolas% echo ${var%/*}
/Toto/Exemple/Image

Reply

Sujets relatifs:

Leave a Replay

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