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 :

Incrémenter un nombre sur plusieurs chiffres : 001 => 50000


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Par défaut Incrémenter un nombre sur plusieurs chiffres : 001 => 50000
    Bonjour à tous,

    J'ouvre une question sur le format des nombres en shell. Dans un boucle je voudrai afficher un nombre I=001
    incrémenté de 1 jusque 100000.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    I=001
    for i in `ls "$TMPDIR"/*.pdf`
    do
                 FILE_NAME=`ls -l $i | awk '{print $9}' | awk -F'/' '{print $5}'`
     
    echo FILE_NAME_"$I"="$FILE_NAME"
     
    I=$((I+1))
     
    done
    ca fait évidement: FILE_NAME_001= toto , FILE_NAME_2=titi etc ....
    je voudrai pouvoir afficher le nombre comme ceci: 001,002 ....

    Si vous avez une idée ... merci d'avance.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    On manque d'information du format, donc voici juste une piste:
    Ceci te donnera les valeurs de 001 à 100, mais si tu remplace 100 par 1000, ça donnera 0001 à 1000, etc...

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    Je n'avais pas regardé le script...
    C'est quoi ton but, c'est de faire le plus sale possible ?

    car que cela soit d'un point de vue langage et/ou conception, c'est abominable:
    -ls : N_BaH au secours
    -créer n variables ... ça fait peur

  4. #4
    Invité
    Invité(e)
    Par défaut
    aujourd'hui 09:20 :
    et je n'oublie pas: stat et jamais ls !
    mon œil !
    à 09:33 tu en mets deux.

    et puis, règle n+1 :
    « quand une commande se pipe à une autre instance d'elle-même, c'est qu'il y a un problème (algorithme, codage...) »

    je voudrai pouvoir afficher le nombre comme ceci: 001,002 ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '%s_%03d\n' "$fileName" $nombre
    et puis, encore une règle :
    « les noms de variables tout en majuscules sont, par convention, réservés aux variables d'environnement (HOME, PATH, UID).
    les variables utilisateurs peuvent mélanger des majuscules et des minuscules, être "panAchées". »
    Dernière modification par Invité ; 03/02/2021 à 15h05.

  5. #5
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    zero=000000
     
     for (( i=0 ; i< 1235 ; i++ )) ; do  echo ${zero:0:${#zero}-${#i}}$i; let i=i+1; done

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in {00..999} {1000..5000}; do echo $i ; done

  7. #7
    Invité
    Invité(e)
    Par défaut
    vos solutions ne sont pas adaptées, puisque NetLink veux faire correspondre le listage de ses fichiers et l'incrémentation.

    il est vrai que la question est mal posée :
    incrémenté de 1 jusque 100000.
    si j'ai bien compris.

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

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

    De toute façon, il est déconseillé de travailler avec des zéros non utiles à gauche, car à la moindre interprétation arithmétique, on se prend la base octale en pleine poire.
    Donc, méfiance.

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    vos solutions ne sont pas adaptées, puisque NetLink veux faire correspondre le listage de ses fichiers et l'incrémentation.
    [MAUVAISE_FOIS]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in {00..999} {1000..50000000}; do read filename || break ; echo ${filename}_$i ; done < <(printf '%s\n' *)
    [/MAUVAISE_FOIS]

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    [MAUVAISE_FOIS]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in {00..999} {1000..50000000}; do read filename || break ; echo ${filename}_$i ; done < <(printf '%s\n' *)
    [/MAUVAISE_FOIS]
    C'est la mauvaise fois où disedorgue a fait preuve de mauvaise foi.




  11. #11
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 444
    Par défaut

  12. #12
    Membre confirmé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Par défaut super
    Merci beaucoup à tous pour vos interventions.

    Je clôture du coup ... !

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

Discussions similaires

  1. [Débutant] incrémentation nombre sur plusieurs interfaces
    Par stracoma dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/05/2015, 23h13
  2. Nombre sur 2 chiffres
    Par Graimbault dans le forum Débuter
    Réponses: 3
    Dernier message: 24/11/2012, 14h43
  3. Déclarer un nombre sur 4 chiffres
    Par clavelski dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/06/2010, 11h16
  4. Nombre sur deux chiffre
    Par turbo_chess dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 14/03/2009, 15h04
  5. Réponses: 2
    Dernier message: 17/01/2007, 18h21

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