Distinguer l'extension du nom d'un fichier

Résolu
tbeghain Messages postés 58 Date d'inscription   Statut Membre 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
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
[jp@MDK tmpfs]$ var="commentcamarche.net"

[jp@MDK tmpfs]$ echo ${var%.*}
commentcamarche

[jp@MDK tmpfs]$ echo ${var#*.}
net

[jp@MDK tmpfs]$
;-))
1
tbeghain Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci beaucoup, ça marche impec
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > tbeghain Messages postés 58 Date d'inscription   Statut Membre Dernière intervention  
 
De rien, c'est fait pour ;-))
0
Laurent
 
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é.
0
tbeghain Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci, c'est précisemment ce que je cherche à faire, mais comment le faire ?
0
sbouli Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

essaie (je n'ai pas testé)
echo ${var%%.*}
echo ${var##*.}
0

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

Posez votre question
sbouli Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   2
 
bonjour,

ni l'un ni l'autre, voici la sortie :

mail
gz


Merci
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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]#
;-))
0
sbouli Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   2 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
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
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
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$ 
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Arf, et moi, j'ai pas cherché non-plus, je me suis dis, s'il dit que ça ne marche pas, c'est que ça ne marche pas :(
0
sbouli Messages postés 200 Date d'inscription   Statut Membre Dernière intervention   2 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
euuu hein ????? la réponse de jipicy est nickel ... comme toujours ....

Stéphane
0