IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Associer l'extension au nom du fichier.


Sujet :

Linux

  1. #1
    Membre régulier Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Points : 106
    Points
    106
    Par défaut Associer l'extension au nom du fichier.
    Bonjour.

    J'essaie ici de réaliser un script qui associe au nom des fichiers avec extension, le nom de leur extension, mais mon programme bloc...je ne sais où (impossible de detecter avec "sh -x fichier".

    voici le code.:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      1  #! /bin/sh
         2  for fico in `ls *.*`
         3  do
         4  ext=(`cut -f2 -d. "$fico"`)
         5  echo " $fico a pour ext $ext "
         6  done
    l'erreur est à la ligne 4, mais j'ai déjà testé (je pense..) toutes les variante pour affecter à la variable $ext l'extension de $fic

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Points : 40
    Points
    40
    Par défaut
    Bonjour Linu6,

    si tu veux connaitre la cause de l'erreur tu peux simplement écrire dans ton terminal, la ligne suivante qui simule l'exécution de la ligne 4 avec "toto.bak" comme valeur pour la variable $fico :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ext=(`cut -f2 -d. toto.bak`)
    La sanction est immédiate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /bin/sh: Syntax error: "(" unexpected
    Il te suffirait donc d'enlever les parenthèses pour faire disparaître l'erreur. Au passage, note que ton script peut se comporter de manière inattendue si le répertoire que tu parcours contient des fichiers aux noms étranges (notamment comprenant des espaces, ou aucune extension, ou encore plusieurs occurrences du caractère ".").

    Mes 2€ centimes...

    MarkH

  3. #3
    Membre régulier Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Points : 106
    Points
    106
    Par défaut
    non ca ne marche toujours pas car quand je fais:

    ext=`cut -f2 -d. toto.bak`

    ensuite:

    echo $ext
    j'ai toujour une ligne vide

    j'ai testé avec bash, sh, et zsh ...mais rien à faire

  4. #4
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Ta commande dit au shell d'extraire le 2ème champ des enregs présents dans le fichier $fico

    ext=(`cut -f2 -d. "$fico"`)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #! /bin/sh
    for fico in *.*
    do
        # solution 1.
        # ext=$(echo "$fico" | cut -f2 -d.)
        #
        # solution 2 (permet de gerer les noms de fichiers avec plusieurs '.'
        # Exemple, a.b.c.txt
        ext=$(echo ${fico##*\.})
        echo " $fico a pour ext $ext "
    done
    ${paramètre##mot}
    Le mot est développé pour fournir un motif, comme dans l'expansion des noms de fichiers. Si le motif correspond au début de la valeur du paramètre, alors le développement prend la valeur du paramètre après suppression du plus petit motif commun (cas ``#''), ou du plus long motif (cas ``##''). Si le paramètre est @ ou *, l'opération de suppression de motif est appliquée à chaque paramètre positionnel successivement, et le développement donne la liste finale. Si le paramètre est une variable tableau indexée par @ ou *, l'opération de suppression de motif est appliquée à chaque membre du tableau successivement, et le développement donne la liste finale.

  5. #5
    Membre régulier Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Points : 106
    Points
    106
    Par défaut
    Merci beaucoup BlaireauOne.
    C'est un miracle, mon bidul marche!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2014, 19h37
  2. supprimer extension du nom de fichier
    Par arm3366 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 04/07/2011, 15h47
  3. [batch] supprimer extension des noms de fichiers dans un texte
    Par mirage59 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 06/03/2009, 13h47
  4. séparation d'extension sur nom de fichier
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/02/2008, 22h50
  5. Réponses: 5
    Dernier message: 31/05/2007, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo