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 :

Besoin d'aide pour réaliser un script de visualisation de fichier


Sujet :

Linux

  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 réaliser un script de visualisation de fichier
    Bonjour, j'ai besoin d'aide pour réaliser un script bash de visualisation de fichier.

    Je j'ai des fichiers que je reçois toute les 30mn, je les ranges automatique dans des dossiers nommé par date du jour
    ex :
    /data/20160515
    /data/20160516
    /data/20160517

    chaque dossier contient les fichiers d'une journée dans le format "dateheure-toto.tz" J'aimerai dans un script taper par exemple "envoi.sh 201605151530 201605171300" lister automatiquement tout les fichiers comprises entre ces 2 dates dans un ls par exemple ou ll ?

    je sais pas par quoi commencer car cela m'a l'air costaud a réaliser ? car il faut checker chaque dossier dans les 2 dates et heures

    j'ai trouvé un truc qui pourrait être un bon départ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    cat envoi.sh 
    #!/bin/bash
     
    START=`echo $1 | tr -d _`;
     
    for (( c=0; c<$2; c++ ))
    do
        echo -n "`date --date="$START +$c day" +%Y%m%d` ";
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [toast@home ~]$ ./envoi.sh 20100401 6
    20100401 20100402 20100403 20100404 20100405 20100406

    merci pour vos lumières et vos aides
    Max

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    salut,

    un truc comme ça pourrait probablement convenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    repertoire="data/"
    find ${repertoire} -type f | awk -vSTART=$1 -vSTOP=$2 '
    {
       t = substr($0, length("'${repertoire}'")+10, 12)
    }
    t > START && t < STOP {
       print
    }'
    par contre ce morceau de script ne fonctionne que si on a passé 2 timestamps de 12 chiffres chacun en paramètre, ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ ./envoi.sh 201508190810 201508190900
    data/20150819/201508190821-toto.tz
    data/20150819/201508190823-toto.tz
    data/20150819/201508190820-toto.tz
    data/20150819/201508190822-toto.tz
    si on ne passe en paramètre que 20160819 ou 2016 ce sera interprété non pas comme des dates mais comme des nombres inférieurs aux autres, ce qui amènera le script à renvoyer le mauvais lot de fichiers, il faut donc être rigoureux sur la syntaxe choisie et adapter le script au besoin

    également ici le script repose entièrement sur le fait qu'on le lance depuis le répertoire qui contient data/, si on le lance depuis ailleurs ça ne marche plus, pareil ça s'adapte en cherchant un peu

    Edit: des fois que ça intéresse, les commandes pour générer l'arborescence de tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ mkdir -p data/{2016,2015}0{3..8}{10..25}/
    $ find data/ ! -path "data/" | awk '{for (h=8; h<12; h++) {for (m=20; m<24; m++) {printf("%s%s%02d%02d-toto.tz\n", $0, substr($0,5,20), h, m)}}}' | xargs touch
    $ find . | wc -l
    3266

  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 BufferBob, c'est exactement ça, mais en faisant les tests, je me suis rendu compte que j'ai donné une mauvaise arbo, et je pense que c'est plus pareil, j'ai essayé de m'amuser un peux mais je n'arrive pas a obtenir les résultats! en fait l'arbo ou se trouve les *.tz sont dans :

    /data/20150714/EXPLOIT/201507141130-toto.tz, donc j'ai un dossier EXPLOIT entre la date du répertoire et celui du fichier, si tu peux me donner un dernier coup de pouce

    merci beaucoup beaucoup

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    Citation Envoyé par maxdata Voir le message
    j'ai un dossier EXPLOIT entre la date du répertoire et celui du fichier, si tu peux me donner un dernier coup de pouce
    nop, c'est laissé en exercice avec la mention "être acteur de ses succès"

  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
    j'ai essayé des trucs mais je ne sais pas comment mettre la bonne syntaxe, j'ai des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    repertoire="/data/"
    rep="EXPLOIT"
    find ${repertoire} -type f | awk -vSTART=$1 -vSTOP=$2 '
    {
       t = substr($0, length("'${repertoire}'")+10, 12),("'${rep}'")
    }
    t > START && t < STOP {
       print
    }'

  6. #6
    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
    c'est ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    repertoire="data/"
    rep="EXPLOIT"
    find ${repertoire} -type f | awk -vSTART=$1 -vSTOP=$2 '
    {
       t = substr($0, length("'${repertoire}','${rep}'")+10, 12)
    }
    t > START && t < STOP {
       print
    }'

  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
    cela a l'air de marcher, mais par contre j'ai laissé tourné le truc pendant 20 mn sans résultat, le dossier data contient 300 dossier, contenant chacun 48 fichier *.tz, le script balai tout les répertoire même si la date n'est pas entre START et STOP avant de retourner un résultat ?

  8. #8
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    Citation Envoyé par maxdata Voir le message
    cela a l'air de marcher, mais par contre j'ai laissé tourné le truc pendant 20 mn sans résultat, le dossier data contient 300 dossier, contenant chacun 48 fichier *.tz
    donc c'est que ça ne marche pas tant que ça et qu'il y a un souci quelque part, ça devrait prendre une poignée de secondes grand maximum et encore

    le script balai tout les répertoire même si la date n'est pas entre START et STOP avant de retourner un résultat ?
    eh oui, tu voudrais que ça fasse comment sinon ? que les fichiers se présentent d'eux-mêmes à l'accueil ?

    je crois qu'il est essentiel de comprendre ce que l'on fait (ça vaut pour tout, programmation, sécu etc. ), hors ici on a le sentiment assez clair que tu comprends moyennement ce que fait la solution proposée et que tu cherches moyennement à comprendre

  9. #9
    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
    je crois qu'il est essentiel de comprendre ce que l'on fait (ça vaut pour tout, programmation, sécu etc. ), hors ici on a le sentiment assez clair que tu comprends moyennement ce que fait la solution proposée et que tu cherches moyennement à comprendre[/QUOTE]

    Tu est un peut dur là, tu me reproche de pas comprendre la solution que tu m'a gentiment proposé, je suis pas expert, je pratique occasionnellement. Cela fait 3 jours que je regarde quand j'ai un moment a faire des tests et je te dit clairement ! OUI je ne comprend pas tout dans ta solution ! Alors tu m'aide a comprendre ?

  10. #10
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    Citation Envoyé par maxdata Voir le message
    Alors tu me reproche de pas comprendre la solution que tu m'a gentiment proposé, je suis pas expert, je pratique occasionnellement. Cela fait 3 jours que je regarde quand j'ai un moment a faire des tests et je te dit clairement ! OUI je ne comprend pas tout dans ta solution ! Alors tu m'aide a comprendre ?
    la solution proposée se résume en gros à un find | awk, soit 2 commandes assez classiques, dont une se passe à priori d'explication (le find, au cas où : ça sert à trouver/lister des fichiers)
    quant à l'autre -le awk- il est assez simple à comprendre, au pire une requête google sur "awk substr" et c'est marre

    là dessus tu me demande de corriger la solution que je te propose gracieusement pour y intégrer un répertoire (dont le nom est fixe), ce qui si on cherche à comprendre un tant soi peu le script amène non pas à faire 3 posts d'affilée dans la discussion mais à remplacer le +10 par un +17
    le dernier post en vient presque à demander comment fonctionne find en gros

    donc dire "je suis pas expert" est un euphémisme, et "tu m'aide a comprendre ?" s'apparente à "tu me le fais intégralement", à quoi je te réponds "je t'ai fait 90% du truc, débrouille toi avec les 10% qui restent"
    en clair soit t'es pas assez impliqué dans la résolution de ton problème, soit t'es un peu trop juste techniquement parlant, j'ai préféré penser que t'étais pas suffisamment impliqué mais j'ai peut-être eu tort...

  11. #11
    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
    donc dire "je suis pas expert" est un euphémisme, et "tu m'aide a comprendre ?" s'apparente à "tu me le fais intégralement", à quoi je te réponds "je t'ai fait 90% du truc, débrouille toi avec les 10% qui restent"
    le fait de dire que je suis pas expert en dev c'est un euphémisme ? et le fait de dire que je suis pas expert en plomberie c'est quoi ? pourquoi tu me juge ?

    en clair soit t'es pas assez impliqué dans la résolution de ton problème, soit t'es un peu trop juste techniquement parlant, j'ai préféré penser que t'étais pas suffisamment impliqué mais j'ai peut-être eu tort...
    j’avoue que tu code bien, mais coté pédagogique je suis pas sur que tu es des qualités non plus, car tu critique plus facilement que tu code respecte moi plutôt que de sous entendre des choses rabaissant !!!! chacun a son expertise dans sont domaine ? c'est ce qui fait nos richesses, mais surement je pourrai te faire une optimisation fiscale, c'est mon domaine.

    Avant de regarder et de juger les amateurs comme moi, qui ont besoin 1 fois de temps en temps de faire un petit code !! si le faite de venir chercher de l'aide te met dans cette état d'animosité "parce que je n'ai pas compris quelque chose dans un code"

    bref, je vais me débrouiller je ne te demande plus rien, merci tu m 'as assez critiqué

  12. #12
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    Citation Envoyé par maxdata Voir le message
    j’avoue que tu code bien, mais coté pédagogique je suis pas sur que tu es des qualités non plus
    tout à fait, et pour un service all-inclusive sans te fatiguer, juste en passant commande, sans critique aucune et avec un support pédagogique; n'hésite pas à t'allouer les services d'un prestataire

    chacun a son expertise dans sont domaine ? c'est ce qui fait nos richesses, mais surement je pourrai te faire une optimisation fiscale, c'est mon domaine.
    là aussi entièrement d'accord ! si tu pouvais par ailleurs m'indiquer le nom d'un bon forum d'optimisation fiscale pour le tout-venant comme moi qui n'y connais rien que je puisse y poser des questions complexes et attendre sagement qu'on m'y mâche le travail, donc un site respectueux évidemment, mais aussi efficace et gratuit stp, d'avance merci

    si le faite de venir chercher de l'aide te met dans cette état d'animosité "parce que je n'ai pas compris quelque chose dans un code"
    d'animosité... de fureur incontrôlée, de déchainement haineux, de bestialité cruelle tu veux dire, osons la justesse des propos !

    bref, je vais me débrouiller je ne te demande plus rien, merci tu m 'as assez critiqué
    pas de souci, bon courage

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/10/2007, 14h24
  2. Besoin d'aide pour installer un script PHP
    Par picasso1er dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 14/09/2007, 13h00
  3. Réponses: 4
    Dernier message: 14/08/2006, 16h50
  4. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 17h44

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