Distinguer l'extension du nom d'un fichier

Résolu/Fermé
tbeghain Messages postés 58 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 22 février 2021 - 12 juin 2007 à 17:08
asevere Messages postés 13087 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 - 23 sept. 2008 à 13:53
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
12 juin 2007 à 17:30
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 mercredi 31 mars 2004 Statut Membre Dernière intervention 22 février 2021 3
13 juin 2007 à 08:50
Merci beaucoup, ça marche impec
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > tbeghain Messages postés 58 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 22 février 2021
13 juin 2007 à 08:51
De rien, c'est fait pour ;-))
0
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 mercredi 31 mars 2004 Statut Membre Dernière intervention 22 février 2021 3
12 juin 2007 à 17:19
Merci, c'est précisemment ce que je cherche à faire, mais comment le faire ?
0
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
23 sept. 2008 à 10:37
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
23 sept. 2008 à 10:40
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
23 sept. 2008 à 10:56
bonjour,

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

mail
gz


Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 sept. 2008 à 11:00
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
23 sept. 2008 à 11:04
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 13087 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426
23 sept. 2008 à 11:08
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 13087 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
23 sept. 2008 à 11:09
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2 > asevere Messages postés 13087 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024
23 sept. 2008 à 11:27
euuu hein ????? la réponse de jipicy est nickel ... comme toujours ....

Stéphane
0