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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    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 confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    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
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    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 confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    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
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    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
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 71
    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
    }'

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/10/2007, 13h24
  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, 12h00
  3. Réponses: 4
    Dernier message: 14/08/2006, 15h50
  4. 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