Rechercher : dans
Par :

[SHELL] Récuperer les 3 derniers caracteres

Dernière réponse le 25 fév 2009 à 18:15:50 Vincent, le 25 avr 2007 à 17:43:16 
 Signaler ce message aux modérateurs

Bonjour, je souhaite récupérer l'extension d'un nom de fichier en SHELL.

J'ai donc fait

ext=`echo $nom |cut -f2 -d.`


Cependant, parfois j'ai des fichiers qui s'appellent "blabla.truc.jpeg" donc ca fausse tout et je me retrouve avec une extension qui s'appelle truc

Est il possible de faire l'inverse, c'est à dire de partir de la fin de la chaine de caractere et recuperer ce qui est à droite du delimiteur "." ?

merci d'avance

Cdlt

Vincent
Configuration: Indeterminable Indeterminable

Meilleures réponses pour « [SHELL] Récuperer les 3 derniers caracteres » dans :
[Shell] Accès aux dernières commandes de l'historique VoirLe shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps. Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut. Mais il y a moyen...
[Shell] Récupérer son IP publique VoirFinalité Pour plusieurs raisons, on peut avoir besoin de récupérer son adresse IP publique dans un script. Le problème qui se pose alors si l'on est sur un LAN, est de trouver cette IP sans interventions humaine. Mise en œuvre Le moyen le plus...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...

1

jipicy, le 25 avr 2007 à 17:47:55

Salut,

jp@MDK:~/tmpfs ssh$ var="mon.pro.txt"
jp@MDK:~/tmpfs ssh$ echo ${var##*.}
txt
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

Vincent, le 25 avr 2007 à 18:19:52

Merciiii ;)

Répondre à Vincent

3

jipicy, le 25 avr 2007 à 19:00:51
  • +2

Re-

Ça c'était pour le cas ou les extensions ont plus de 3 caractères (jpeg), mais si tes extensions sont formatées sur 3 caractères, tu peux aussi faire comme suit :

[jp@MDK tmpfs]$ var="mon.pro.txt"
[jp@MDK tmpfs]$ echo ${var: -3}
txt
[jp@MDK tmpfs]$
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

gorkimat, le 28 fév 2008 à 13:37:37

Bonjour,

Je rencontre actuellement le même besoin.

J'ai essayé cette commande en bash, elle fonctionne à merveille, mais le problème, c'est que mes scripts doivent être en ksh.

bash-3.00$ ksh
$  var=15225452211155912345
$ echo ${var: -5}
ksh: ${var: -5}: bad substitution


Existerait-il le même type de solution en ksh ??

Merci beaucoup pour votre aide,

Cdlt,

Mathieu

Répondre à gorkimat

5

jipicy, le 28 fév 2008 à 13:51:19
  • +2

Salut,

Tu peux toujours essayer comme ça :

$ var=15225452211155912345
$ expr "$var" : ".*\(.....\)"
12345
;-))

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

Répondre à jipicy

6

gorkimat, le 28 fév 2008 à 13:55:02

Bonjour Jipicy,

Merci beaucoup, cela marche nickel.

Mat

Répondre à gorkimat

7

 jérome, le 25 fév 2009 à 18:15:50

Principe valable pour tous les shells et toutes les longueurs de suffixes (mais syntaxe de déclaration de variable à adapter par exemple en csh) :

# extrait le suffixe d'un nom de fichier : aa.bb.cc -> .cc
suffixe() {
nom=`basename "$1"` &&
nom=`expr match "$nom" ".*\(\..*\)$"` &&
echo $nom
}

# extrait les suffixes d'un nom de fichier : aa.bb.cc -> .bb.cc
suffixes() {
nom=`basename "$1"` &&
nom=`expr match "$nom" "[^.]*\(\..*\)$"` &&
echo $nom
}

suff=$(suffixe monFichier.sonExtension)

Répondre à jérome
Collection CommentÇaMarche.net