[Shell] Récupérer extensions

Résolu/Fermé
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 - 13 mai 2008 à 16:36
 dzincou - 2 avril 2009 à 12:58
Bonjour, étant débutant je me demande comment récupérer que l'extension(ex : ".exe") d'un nom de fichier.
Ma base de travail est un fichier texte contenant tous mes noms de fichiers :

Exemple :

Toto.exe
tata.fmb
titi.gz
tonton


Etant donnée que mes extension peuvent comporter trois, deux ou zéro caractères le code suivant ne me donne pas ce que j'attend :
expr "$line" : ".*\(....\)"


Résultat:
.exe
.fmb
i.gz #( pas bon )
nton #( pas bon )


Donc y a t-il des fonctions prédéfinies pour couper les chaines après un caractères désigné, ou une autre solution?

Merci d'avance de vos réponse

2 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
13 mai 2008 à 16:42
Salut,

Essaie avec ça:
grep -Eo "\..+$"
0
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5
13 mai 2008 à 16:52
Merci à tous le monde ça marche impecable
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009
13 mai 2008 à 16:53
Hé! C'est à mon message qu'il répond!

Gnaha!
0
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
13 mai 2008 à 16:59
Ca marche pour les deux solutions ^^
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 894 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
13 mai 2008 à 17:02
Ben il répond chronologiquement, pas la peine d'en faire tout un fromage, pfffffffffffffffffff ces d'jeuns ;-DD
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 567 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
13 mai 2008 à 18:12
Hé! C'est à mon message qu'il répond!
C'est normal, puisque c'est un coup monté grâce au MP ;-DDDDDD
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 894
13 mai 2008 à 16:42
Salut,

En gardant ton expression, mais en changeant la syntaxe :
expr "$line" : ".*\(\..*\)"
;-))
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
13 mai 2008 à 16:43
Ah non c'est pas juste, je t'ai devancé d'une seconde :'-(
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 894 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
13 mai 2008 à 16:47
Priorité aux vieux et pis c'est tout ;-DD
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 567 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
13 mai 2008 à 16:50
je t'ai devancé d'une seconde
c'est enorme ;-DDDDDDDDD
0
Bonjour,

Merci pour votre réponse concernant la récupération de l'extension d'un fichier à l'aide d'un script shell.

Je début en la matière et en cherchant à résoudre mon problème je n'ai pas trouvé mieux que votre réponse. Cependant, il me manque un bout par rapport à ce que je veux faire.

Dans mon cas, je parcours une arborescence et pour chaque fichier je voudrais tester l'extension pour lancer tel programme si c'est un .txt, tel autre programme si c'est un .pdf etc ...

Votre petit bout de code est parfait pour me donner l'extension de tous les fichiers, mais je n'arrive qu'a afficher le resultat et non à "l'exploiter".

Est ce que cela est possible ? je voudrais par exemple mettre cette extension dans une variable et faire une comparaison avec ".txt" ou ".pdf" (ce que je ne sais pas faire et ne trouve pas comment faire).


Merci d'avance,

Eric
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 894 > dzincou
2 avril 2009 à 11:46
Salut,

Tu récupères ton extension dans une variable ( ext=$(ta_syntaxe_pour_récupérer_extension) ) puis tu fais un :
case "$ext" in
.txt)     ta commande pout txt
;;
.pdf)     ta commande pour pdf
;;
.doc)     ta commande pour doc
;;
etc.
;;
esac
;-))
0