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

Shell et commandes GNU Discussion :

Variable qui commence par des zéro


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut Variable qui commence par des zéro
    Bonjour,

    J'aimerais renommer mes fichier mp3 en les numérotants. Avant d'appliquer le "mv", j'utilise cette commande pour voir ce que cela donne dans un terminal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myvar = 1 ; for i  in *.mp3 ; do  echo "$myvar - $i" ; myvar=$((myvar+1));  done ;
    Les fichiers son bien numérotés est la commande du dessus me donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1 - nom.mp3
    2 - nom.mp3
    3 - nom.mp3
    4 - nom.mp3
    J'aimerais savoir comment faire pour qu'elle me donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0001 - nom.mp3
    0002 - nom.mp3
    0003 - nom.mp3
    0004 - nom.mp3
    Merci pour votre aide.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    Une solution s'appelle printf.
    On formate la chaîne de sortie.
    Ici, en ajoutant les 0 non significatifs à gauche.
    Je déconseille de créer des noms de fichiers avec des espaces qui sont souvent une source de bugs et dysfonctionnements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $ for ((v=0;v<15;v++)); do printf "%04i-nom.mp3\n" $v;done
    0000-nom.mp3
    0001-nom.mp3
    0002-nom.mp3
    0003-nom.mp3
    0004-nom.mp3
    0005-nom.mp3
    0006-nom.mp3
    0007-nom.mp3
    0008-nom.mp3
    0009-nom.mp3
    0010-nom.mp3
    0011-nom.mp3
    0012-nom.mp3
    0013-nom.mp3
    0014-nom.mp3

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut
    Merci Flod,

    J'essayais effectivement d'utiliser la commande printf

    Sauf erreur de ma part, ta boucle for ne charge pas la liste des fichiers du répertoires alors que la mienne si.

    Cette commande fais ce que je veux mais j'ai du mettre un sed pour faire une substitution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     myvar = 0 ; for i  in *.mp3 ; do  echo "`printf "%04d\n" $myvar |sed "s/ /0/"`-$i" ; myvar=$((myvar+1));  done ;

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    ta boucle for ne charge pas la liste des fichiers du répertoires alors que la mienne si.
    Je ne cherche pas à faire le script à ta place mais juste à répondre à ton point d'accroche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "`printf "%04d\n" $myvar |sed "s/ /0/"`-$i"
    Je m'étrangle en lisant cela.
    Tu fixes le format de ta chaîne et tu utilises un sed car le format ne te convient pas.
    Tu n'as qu'à mettre le bon format directement ...

    (Ici, le sed ne sert à rien, amha)

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Je m'étrangle en lisant cela.
    et moi, j'ai les yeux qui saignent.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut
    Désolé pour les dragées et les gouttes pour les yeux qui devraient m'être destiner,

    Une faute de déclaration me mettait des messages d'erreure quand je n'utilisait pas sed :
    LA mauvaise ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    myvar=1 ; for i  in *.mp3 ; do  echo "`printf "%04d\n`$myvar-$i" ; myvar=$((myvar+1));  done ;
     
    bash: command substitution: ligne 1: fin de fichier (EOF) prématurée lors de la recherche du « " » correspondant
    bash: command substitution: ligne 2: erreur de syntaxe : fin de fichier prématurée
    La ligne qui fonctionne sans message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     myvar=1 ; for i  in *.mp3 ; do  echo "`printf "%04d\n" $myvar`-$i" ; myvar=$((myvar+1));  done ;
    Je vous laisse seules juges
    La vie ne tien qu'a un petit `

    Merci pour votre support

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

Discussions similaires

  1. variable qui commence par ) :
    Par logiciel_const dans le forum iReport
    Réponses: 1
    Dernier message: 13/06/2011, 15h27
  2. selection des fichiers TXT qui commence par SR dans getopenfilename
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2009, 17h04
  3. Afficher des noms qui commencent par une lettre donnée
    Par kroma23 dans le forum Bases de données
    Réponses: 1
    Dernier message: 22/11/2008, 16h48
  4. Numérotation des sections qui commence par 0 au lieu de 1
    Par Lumina- dans le forum Mise en forme
    Réponses: 3
    Dernier message: 12/05/2008, 10h24
  5. Des nombres qui commencent par 0
    Par KEROZEN dans le forum Access
    Réponses: 5
    Dernier message: 28/04/2006, 13h31

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