Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/01/2011, 09h51   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 40
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 40
Points : 10
Points : 10
Par défaut extraire le chemin d'un fichier mais sans le fichier

bonjour à tous, je cherche depuis 1H à extraire le chemin d'un fichier mais sans le nom du fichier ; pour etre plus claire
si j'ai $chemin="../SE/aa"
j'aurai $chemin2="../SE"
et cela pour tester si ce répertoire existe vraiment
j'essaye des manips avec cut et awk mais sans succès , y'aurai-t-il un moyen pour faire cela ???
anissben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 10h33   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 978
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 978
Points : 5 993
Points : 5 993
Bonjour.

Ceci pourrait convenir :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
 
chemin="../SE/aa"
 
# nombre d'élément
SIZE=$(echo $chemin | awk 'BEGIN{FS="/"} {print NF}')
 
chemin2=$(echo $chemin | awk 'BEGIN{FS="/"} {print $1}')
 
for (( i=2 ; i<$SIZE ; i=$i+1 ))
do
      elem=$(echo $chemin | awk 'BEGIN{FS="/"} {print $('$i')}')
      chemin2=$chemin2/$elem
done
 
echo $chemin2
Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 15/01/2011, 10h41   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 40
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 40
Points : 10
Points : 10
le code que vous me proposer me donne ce qui suit le dernier "/" c'est à dire
$chemin1="../SE/aa"
$chemin2="aa"

et ce que je voudrai c'est $chemin2="../SE"
merci bien !!
anissben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 10h50   #4
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 978
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 978
Points : 5 993
Points : 5 993
Oui j'ai lu trop vite et compris le problème à l'envers.
J'ai édité mon premier message avec un script qui fonctionne mais je pense qu'il y a surement des solutions plus simples.

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 11h17   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2009
Messages : 40
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 40
Points : 10
Points : 10
merciii bien , c'est ce que je voulais , merci encore !!!!!
anissben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 14h42   #6
Membre éclairé
 
Homme Lilian Herault
Architecte technique
Inscription : juin 2010
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Lilian Herault
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Industrie

Informations forums :
Inscription : juin 2010
Messages : 215
Points : 335
Points : 335
Bonjour,

Je pense qu'il y a plus simple, la commande dirname fait ca.

Sinon, tu peux aussi faire ça:

Code :
1
2
chemin="../SE/AA"
chemin2=${chemin%/*}
Lilian.
lilian_h est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/01/2011, 16h55   #7
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
basename et dirname selon la partie qu'on souhaite garder
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h00.


 
 
 
 
Partenaires

Hébergement Web