Distinguer l'extension du nom d'un fichier
Résolu
tbeghain
Messages postés
63
Statut
Membre
-
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
Bonjour,
Sur AIX, dans un script shell, j'ai une variable qui contient un nom de fichier (exemple monfic.txt). Comment, à partir de cette variable, puis-je obtenir deux variables, une contenant le nom (monfic), et l'autre l'extension (txt) ?
Merci pour vos réponses
Sur AIX, dans un script shell, j'ai une variable qui contient un nom de fichier (exemple monfic.txt). Comment, à partir de cette variable, puis-je obtenir deux variables, une contenant le nom (monfic), et l'autre l'extension (txt) ?
Merci pour vos réponses
5 réponses
-
Salut,
[jp@MDK tmpfs]$ var="commentcamarche.net" [jp@MDK tmpfs]$ echo ${var%.*} commentcamarche [jp@MDK tmpfs]$ echo ${var#*.} net [jp@MDK tmpfs]$;-))
-
lu
Je ne fais pas de script shell.. mais je dirais que tu peux couper la variable en 2 par rapport au . (point)
et ainsi avoir le nom et l'extension séparé. -
Bonjour,
Je rebondi sur ce post, car mes noms de fichier comporte plusieurs points, comment préciser de prendre en compte le dernier ?
exemple de nom :
mail.log.0.10.gz
l'autre option serait de récupérer le nom du fichier une fois décompressé par gunzip ... mais je n'ai pas trouvé de moyen ...
Merci d'avance.
Stéphane -
Salut,
essaie (je n'ai pas testé)echo ${var%%.*} echo ${var##*.} -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
bonjour,
ni l'un ni l'autre, voici la sortie :
mail
gz
Merci-
Salut,
Tu veux obtenir quoi au final ???[root@servertest trash]# echo ${var} mail.log.0.10.gz [root@servertest trash]# echo ${var%.*} mail.log.0.10 [root@servertest trash]# echo ${var%%.*} mail [root@servertest trash]# echo ${var#*.} log.0.10.gz [root@servertest trash]# echo ${var##*.} gz [root@servertest trash]#;-))
-
fabuleux ces expressions régulières ... faudrais vraiment que j'arrive à accrocher un jour ... même après avoir passé des jours sur AWK puis en perl, je n'arrive toujours pas à prendre le truc ...
j'aurais dû essayer la première solution en dur, je me suis directement dis, oui donc % c'est le joker jusqu'a premier point et ça renvoi le reste .... or il n'en n'est rien ... utilise ta tête et essais stéphane ....
Merci encore à tout les 2.
Stéphane -
Là, le plus rapide semble être l'uitilisation de SED:
c2d:~ adrien$ echo $VAR |sed 's/\(.*\)\.\(.*\)/file: \1 ext: \2/' file: mail.log.0.10 ext: gz
Il y a d'autres solutions mais qui vont nécéssiter beaucoup de commandes.
ex: aficher la variable a l'envers, couper le champ 1 le renverser et tu as l'extension
substituer l'extension trouvée en 1 par rien dans la variable.c2d:~ adrien$ ext=$(echo $VAR|rev |cut -f1 -d'.' | rev) c2d:~ adrien$ echo $ext gz c2d:~ adrien$ file=${VAR/.$ext/} c2d:~ adrien$ echo $file mail.log.0.10 c2d:~ adrien$ -
-
-