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 :

Besoin d'aide pour faire un compteur de fichiers en script Shell


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut Besoin d'aide pour faire un compteur de fichiers en script Shell
    je dois faire un script qui doit compter le nombre de fichiers logs par heure sur 24 heures (du répertoire courant) par date dans un format date (ann/mois/jour/heure/mn) 201602251550, chaque fichier est espacé de 5mn, soit 12 fichiers par heure, mais j'ai pas d'idées. vous pouvez m'aider svp? merci

    Max

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    donc, 12 × 24 = 288 !?

    avant de sortir, je résume :
    compter le nombre de fichiers dont le nom est au format AnnéeMoisJourHeureMinute (par exemple: 201602251550) (il n'y a ni préfixe, ni suffixe ?) par date; c'est-à-dire en ne considérant que les 8 premiers chiffres.

    c'est ça ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    merci pour ta réponse, en effet il y a un suffixe qui est la ville comme "rouen_201602251550.log"

    et c'est bien cela j'ai 12 x24 =288

    j'aimerai avoir un résultat de type

    00h - 12 fichiers
    01h - 12 fichiers
    02h - 10 fichiers
    03h - 0 fichier
    ....
    ..
    Total jours 250 par ex, le but est de savoir si il me manque des fichiers en un coup d'oeil

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    petite parenthèse linguistique, avant de retourner à la recherche d'un algorithme,

    pré_fixe : pré = « en avant »,
    donc, un suffixe, c'est après* !

    * en fait, c'est su(b)_fixe, c'est-à-dire, en-dessous; donc, après, en quelque sorte.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    ok merci pour le point, c'est noté ça correspond a ceux que tu as décris dans ton premier msg, pas de préfixe, ni suffixe.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    voici une méthode :

    attention, je ne prends pas en compte le préfixe :
    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
    17
    18
    19
    20
    21
    22
    $ mkdir testDir
    $ cd testDir/
    $ touch 201602{25..30}{00..23}{00..55..5}
    $
    $ for f in ./2016*; do ff="${f##*/}"; ((ar[${ff::10}]+=1)); done
    $ for i in "${!ar[@]}"; do echo $i -- ${ar[i]}; done
    2016022500 -- 12
    2016022501 -- 12
    2016022502 -- 12
    2016022503 -- 12
    2016022504 -- 12
    2016022505 -- 12
    2016022506 -- 12
    2016022507 -- 12
    2016022508 -- 12
    2016022509 -- 12
    [...]
    2016023019 -- 12
    2016023020 -- 12
    2016023021 -- 12
    2016023022 -- 12
    2016023023 -- 12
    si tu l'acceptes, ta tâche est désormais de commenter ce script pour expliquer ce qui y est fait...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    merci pour ton aide c'est vraiment sympas

    j'ai fait un test mais je ne comprend pas tout, le touch m'a créé une liste de fichier

    touch 201602{25..30}{00..23}{00..55..5}
    201602250{00..55..5} 2016022613{00..55..5} 2016022718{00..55..5} 2016022822{00..55..5} 201602296{00..55..5}
    2016022510{00..55..5} 2016022614{00..55..5} 2016022719{00..55..5} 2016022823{00..55..5} 201602297{00..55..5}
    201602251{00..55..5}

    moi en faite j'ai une liste de fichier dans le format suivant :

    rouen_201602250000.log
    rouen_201602250005.log
    rouen_201602250010.log
    rouen_201602250015.log
    rouen_201602250020.log
    ceci pendant 24h, soit 12 x 24 fichiers = 288

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    c'est exactement ce que j'ai dit :
    • je ne prends pas en compte le préfixe
    • ta tâche est désormais de commenter ce script pour expliquer ce qui y est fait

    je montre comment faire à partir d'un répertoire de test, à charge pour toi d'adapter à ton cas particulier !

    pas si sympa, hein !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    j'ai fait un test mais je ne comprend pas tout, le touch m'a créé une liste de fichier
    Hum. Il ne fallait pas recopier le touch. C'est juste une commande que N_BaH a tapée pour avoir un jeu de fichiers similaire au tien.

    Le vrai script est dans les 2 boucles (avec tableaux associatifs) qui suivent.

    Je n'ai rien à ajouter à la réponse de N_BaH. Tout est clair.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Je n'ai rien à ajouter à la réponse de N_BaH.
    eh ben, c'était bien la peine !

    avec tableaux associatifs
    c'est un tableau indexé
    tout ce qu'il y a de plus simple.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Ah! J'ai appris un truc.
    Il faut obligatoirement declare -A ar pour qu'il admette les indices associatifs avec "rouen".
    Sinon, il remplit l'indice 0.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    bien vu, je n'avais pas extrapolé qu'il pourrait y avoir plusieurs noms de villes en préfixe.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    Points : 32
    Points
    32
    Par défaut
    Bonjour a tous et merci encore pour votre aide

    Chez mois cela ne marche pas très fort

    A quel endroit il faut mettre l'indices associatif dans le script ?

    avec cette commande j'ai aucun retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for f in ./2016*; do ff="${f##*/}"; ((ar[${ff::10}]+=1)); done
    et quand je lance les 2 boucle dans un script

    alors que j'ai plusieurs fichiers

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    ce que j'ai montré ne fonctionne que dans le contexte que j'ai défini, c'est-à-dire des noms de fichiers qui ne comportent que des chiffres, sans préfixe !

    donc, il faut savoir si le préfixe est significatif : est-ce qu'il y en a d'autres que rouen ? et donc, est-ce qu'il faut les récupérer (éventuellement pour construire un tableau associatif, plutôt qu'un tableau indexé) ?

    edit: tu dois "jouer" avec les Remplacement de paramètres (cf. man bash), soit pour enlever ce qui ne t'intéresse pas, soit (!) pour garder des éléments du nom de fichier, qui sont significatifs.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Besoin d'aide pour faire une procédure stockée
    Par PoichOU dans le forum SQL
    Réponses: 17
    Dernier message: 30/04/2007, 17h55
  2. Réponses: 42
    Dernier message: 11/03/2007, 14h09
  3. Besoin d'aide pour faire fonctionner un Script d'upload d'images
    Par PaoOo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 15/06/2006, 21h24
  4. [VBA-E]besoin d'aide pour faire une boucle
    Par mikazounette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 14h04
  5. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 16h44

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