[Shell tcsh] [RESOLU] Récupération du path à partir du fichier
starius
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
Publicité
Posté le 25-05-2004 à 10:42:34
gfive
Posté le 25-05-2004 à 10:46:30
sed s/[^/]*$//g
et ouala.
starius
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...
gfive
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.
starius
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 ? :-(
gfive
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.
oliv5
Pourquoi ? Parce que !
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
starius
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 :-)
gfive
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!
matafan
Posté le 27-05-2004 à 04:52:41
Puis si t'aimes pas dirname, tu peux faire ça en shell sans passer par sed :