Rechercher : dans
Par :

Distinguer l'extension du nom d'un fichier

Dernière réponse le 23 sep 2008 à 13:53:04 tbeghain, le 12 jun 2007 à 17:08:17 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Distinguer l'extension du nom d'un fichier » dans :
[Pratique] Extensions de fichiers VoirUne extension de fichier est un suffixe donné au nom d'un fichier pour permettre d'identifier rapidement son format. Il est très utile de savoir quelles sont les extensions utilisées par les types de fichiers les plus courants. Cependant, il peut...
Associations de fichiers sous Windows Vista VoirSous Windows XP, l'outil permettant d'associer une extension de fichiers à un programme était accessible via les options de dossiers. Sous Windows Vista, suite à une tempête d'icônes, cette option est accessible via : Panneau de...
Renommer plusieurs fichiers en batch VoirLe fait de renommer un grand nombre de fichiers peut très vite devenir fastidieux. Heureusement, il existe des outils permettant d'automatiser cette tâche dans un grand nombre de cas : Fonctionnalités natives Utilisation d'un programme...
Fichier IDX VoirFormat IDX Un fichier IDX est un fichier de sous-titres accompagnant généralement une séquence vidéo dans un fichier à part. Le fichier de sous-titres doit de préférence avoir le même nom que le fichier vidéo (hormis l'extension) est être dans le...
Formats et extensions de fichiers VoirRemarque : La liste ci-dessous n'est pas exhaustive et certains noms d'extension peuvent avoir plusieures fonctionnalités. Quant aux programmes proposés pour utiliser ces fichiers, ils ne sont pas forcément les seuls, ni les plus...
Fichier BAK VoirFormat BAK Les fichiers avec l'extension .BAK (abréviation de backup) sont des fichiers de sauvegarde. Comment lire un fichier BAK ? Un fichier BAK peut contenir à peu près n'importe quel type de données. Le plus simple est de l'ouvrir avec le bloc...

1

Laurent, le 12 jun 2007 à 17:11:40

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é.

Répondre à Laurent

2

tbeghain, le 12 jun 2007 à 17:19:52

Merci, c'est précisemment ce que je cherche à faire, mais comment le faire ?

Répondre à tbeghain

3

jipicy, le 12 jun 2007 à 17:30:50
  • +1

Salut,

[jp@MDK tmpfs]$ var="commentcamarche.net"

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

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

[jp@MDK tmpfs]$
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

tbeghain, le 13 jun 2007 à 08:50:14

Merci beaucoup, ça marche impec

Répondre à tbeghain

5

jipicy, le 13 jun 2007 à 08:51:54

De rien, c'est fait pour ;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

6

sbouli, le 23 sep 2008 à 10:37:24

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

Répondre à sbouli

7

lami20j, le 23 sep 2008 à 10:40:11

Salut,

essaie (je n'ai pas testé)

echo ${var%%.*}
echo ${var##*.}
106485010510997108

Répondre à lami20j

8

sbouli, le 23 sep 2008 à 10:56:10

Bonjour,

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

mail
gz


Merci

Répondre à sbouli

9

jipicy, le 23 sep 2008 à 11:00:06
  • +1

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]#
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

10

sbouli, le 23 sep 2008 à 11:04:45

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

Répondre à sbouli

12

asevere, le 23 sep 2008 à 11:09:28

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 :(
Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

11

asevere, le 23 sep 2008 à 11:08:10

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$ 

Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

13

sbouli, le 23 sep 2008 à 11:27:22

Euuu hein ????? la réponse de jipicy est nickel ... comme toujours ....

Stéphane

Répondre à sbouli

14

lami20j, le 23 sep 2008 à 11:29:59

Ben, si tu regardes ma réponse 7 tu verras que c'est le complement de la réponse 3 de jipicy

qu'il a mis dans ça réponse 9 (3 + 7 réunis)

;-DD 106485010510997108

Répondre à lami20j

15

sbouli, le 23 sep 2008 à 11:38:21

Oui ...mon post est en réponse à celui de asevere
il va devenir super compliqué ce post, pourtant la réponse est ultra précieuse ... on devrait pouvoir bookmarquer certain post dans des favoris, comme reminder ...

Stéphane

Répondre à sbouli

16

lami20j, le 23 sep 2008 à 12:06:00

Salut,

tu peux
http://www.commentcamarche.net/forum/affich 3108781 distinguer l extension du nom d un fichier#9
tu n'as qu'à faire clic sur le numéro de message pour avoir le lien directement vers la réponse qui te conviens ;-)

P.S.

Alors un grand amour pour jipicy ;-DDD 106485010510997108

Répondre à lami20j

17

sbouli, le 23 sep 2008 à 12:24:57

Oui mais je pensais plutot à une interface dans le site, qui permette de gerer des posts préférée ou pour mémo.
je devrais poster l'idée dans le forum suggestion.

Merci en tout cas.

Stéphane

Répondre à sbouli

18

lami20j, le 23 sep 2008 à 12:40:44

La rubrique Mes interventions ne te satisfait pas ?!
106485010510997108

Répondre à lami20j

19

sbouli, le 23 sep 2008 à 12:47:34

A ben non ... je veux pas forcement bookmarker des post provenant de mes interventions. et par ailleurs, il n'y a aucun systeme de classement.

Stéphane

Répondre à sbouli

20

 asevere, le 23 sep 2008 à 13:53:04

oui ...mon post est en réponse à celui de asevere
il va devenir super compliqué ce post, pourtant la réponse est ultra précieuse


D'où le post n°12... j'ai posté ça en me basant sur ce qu'il y avait à l'écran à l'heure ou j'ai ouvert la page, donc, la réponse de JP n'y étant pas, j'ai fait confiance à ta question, en me disant que si la réponse de JP ne te suffisait pas, c'est que tu l'avais testé sans succés (je n'ai pas jugé bon de la re-tester)

Maintenant, je peux le faire sauter pour ne garder que l'essentiel,
Une belette, un lapin !?
C'est pas normal!

Répondre à asevere
Collection CommentÇaMarche.net