[Shell] Récupérer extensions
Résolu
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 :
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
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
Configuration: Windows XP Firefox 2.0.0.14
2 réponses
-
ModérateurSalut,
Essaie avec ça:grep -Eo "\..+$"
-
-
Modérateur
-
@kilianCa marche pour les deux solutions ^^
-
Modérateur@kilianBen il répond chronologiquement, pas la peine d'en faire tout un fromage, pfffffffffffffffffff ces d'jeuns ;-DD
-
Modérateur@kilianHé! C'est à mon message qu'il répond!
C'est normal, puisque c'est un coup monté grâce au MP ;-DDDDDD
-
-
ModérateurSalut,
En gardant ton expression, mais en changeant la syntaxe :expr "$line" : ".*\(\..*\)"
;-))
-
-
Modérateur@kilianPriorité aux vieux et pis c'est tout ;-DD
-
Modérateur@kilianje t'ai devancé d'une seconde
c'est enorme ;-DDDDDDDDD -
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 -
Modérateur@dzincouSalut,
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
;-))
-