Extraire un nom de repertoire

Résolu
mickey4 Messages postés 41 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
bonjours
je recupere un nom de fichier suivant
rep1/rep2/../repn/nom-du-fichier

jaimerais savoir comment faire pour extraire seulement les chemins /rep1/rep2/../repn
le nombre de repertoire a traverser n'étant pas constant

merci
Configuration: Linux
Firefox 2.0.0.3

5 réponses

  1. blux Messages postés 2051 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    avec quel 'langage' :

    shell ou autre ?
    0
  2. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Par exemple comme ceci :

    echo "rep1/rep2/../repn/nom-du-fichier" | sed "s/\(.*\?\/\)[^\/]*/\1/"
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      pour la regex on peu recuperer tout simplement tout jusqu'au dernier / (bon je n'ai pas teste mais je crois que ça marche comme ça :-))
      echo "rep1/rep2/../repn/nom-du-fichier" | sed "s/(\.*)\//\1/"

      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      Salut,

      Plutôt :
      echo "rep1/rep2/../repn/nom-du-fichier" | sed -r "s#(.*/).*#\1#"
      ;-))
      0
    3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Salut,

      jaimerais savoir comment faire pour extraire seulement les chemins /rep1/rep2/../repn

      d'après ça demande il ne voulais pas le / à la fin
      (.*/)
      donc, il ne faut pas le capturer :-))
      "s#(.*)/#\1#"
      et tu n'as pas besoin de .* à la fin, c'est une consommation de texte sans justification

      tu commences à devenir gourmand toi :-))

      et tu te rappelles que -r ne marche pas tout le temps :-)) question de version sed
      0
    4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      donc, il ne faut pas le capturer :-))
      "s#(.*)/#\1#"
      echo "rep1/rep2/../repn/nom-du-fichier" | sed -r "s#(.*)/#\1#"
      rep1/rep2/../repnnom-du-fichier
      Voilà le résultat de ta regex.

      et tu n'as pas besoin de .* à la fin, c'est une consommation de texte sans justification
      echo "rep1/rep2/../repn/nom-du-fichier" | sed -r "s#(.*/)#\1#"
      rep1/rep2/../repn/nom-du-fichier
      Ca foire ;-))

      et tu te rappelles que -r ne marche pas tout le temps :-)) question de version sed
      Je n'ai fait que reprendre ta regex où tu n'avais certe pas mis le switch "-r", mais comme tu n'avais pas protégé les accolades, j'en ai déduit que tu avais juste oublié le switch ;-))
      0
    5. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
       
      (bon je n'ai pas teste mais je crois que ça marche comme ça :-))
      alors tu n'as pas vu ça

      je vais voir à la maison dès que j'arrive
      moi aussi j'ai pris la regex de Jeff, je voulais tout simplement le charrier un peu :-))
      0
  3. mickey4 Messages postés 41 Statut Membre 3
     
    le language est shell bash
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    la commande dirname n'est pas suffisante?

    DIR=$(dirname rep1/rep2/../repn/nom-du-fichier)
    echo $DIR

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mickey4 Messages postés 41 Statut Membre 3
     
    sa marche merci
    0