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 :

Script pour vérifier qu'un fichier existe dans plusieurs dossiers.


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Points : 175
    Points
    175
    Par défaut Script pour vérifier qu'un fichier existe dans plusieurs dossiers.
    Bonjour,

    Désolé si la question peut paraître simple, j'ai cherché sur le forum mais je n'ai pas réussi à trouver ce que je désire faire.

    En gros, je dois faire un script doit vérifier dans plein de sous-dossiers si un fichier avec la date du jour existe.

    En gros, j'ai un dossier Test et dedans j'ai plein de dossier qu'on va appeler dossier_1, dossier_2, dossier_3 et je dois chercher si dans chaque sous dossier si un fichier date_du_jour.log existe et si ce n'est pas le cas, m'envoyer un mail.


    Concernant le script, je regardais pour récupérer dans une variable la valeur d'un ls -d */ pour récupérer tous les noms de dossier et je comptais rentrer dans les dossiers grâce à cette variable puis après faire un if [*-f *log], then echo OK, elsif mailto ......

    On m'a dit que ça risquait d'être compliqué et de voir avec une commande Find.

    Qu'en pensez-vous? Sur quelle piste je devrais me lancer? Sachant que je suis vraiment nul en script

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 401
    Points
    28 401
    Par défaut
    Regarde la doc de la commande find.
    Tu y trouveras tout ce qu'il faut pour faire ce que dédires, et de manière bien plus simple qu'avec un script.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 851
    Points
    5 851
    Par défaut
    Citation Envoyé par suya95 Voir le message
    Concernant le script, je regardais pour récupérer dans une variable la valeur d'un ls -d */ pour récupérer tous les noms de dossier et je comptais rentrer dans les dossiers grâce à cette variable puis après faire un if [*-f *log], then echo OK, elsif mailto ......
    C'est jouable, mais...

    On m'a dit que ça risquait d'être compliqué
    Farpaitement!

    Vaut mieux utiliser les outils existants et éprouvés, comme...

    et de voir avec une commande Find.
    ...comme "find"!

    Par exemple (chez moi):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ find . -name "*$(date '+%y%m%d')*.sql"
    ./MEMO/141208_C14272644_cmd_bloq_commande_en_cours.sql
    Trouvé!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 462
    Points
    19 462
    Par défaut
    On m'a dit que ça risquait d'être compliqué
    bof
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    shopt -s globstar nullglob
    for f in $rep/**/$(date +%y%m%d).log; do test -f "$f" && F+=( "$f" ); done
    ((${#F[@]})) || mail -s 'fichier manquant' user@mailServer

    ON N'UTILISE PAS ls DANS UN SCRIPT !!!

  5. #5
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Points : 175
    Points
    175
    Par défaut
    Merci à tous pour vos réponses.

    Je me suis orienté sur celle de N_BaH, ça fonctionne mais à l'envers , il me prévient quand le fichier existe, ça me fait une centaine de mail

    Mais on s'y rapproche

    Merci beaucoup.

Discussions similaires

  1. [XL-2003] FSO : Recherche si un fichier existe dans un dossier
    Par Gaetan31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2014, 10h24
  2. Réponses: 2
    Dernier message: 21/04/2014, 22h31
  3. Réponses: 1
    Dernier message: 04/02/2010, 20h41
  4. script pour vérifier si un champ existe déjà dans une BDD
    Par tomguiss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/02/2009, 13h19
  5. Réponses: 1
    Dernier message: 13/10/2008, 08h17

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