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 :

Résultat d'une commande vide, comment le caractériser?


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut Résultat d'une commande vide, comment le caractériser?
    Bonsoir,

    Connaissez-vous un moyen simple de tester si le résultat d'une commande est vide ou non ?

    Exemple :

    On passe une commande find ;
    - si elle donne un résultat => action 1
    - si aucun résultat donc "vide" => action 2

    Dans le second cas comment caractériser cela ?
    On pourrait toujours mettre le résultat dans une variable et tester la variable... mais y-a-il plus simple ?

    Merci :-)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour,

    mauvais exemple.
    1. find (comme sed) ne donne un code d'erreur différent de 0 que si il y a une erreur dans la syntaxe de la commande.
    2. find permet d'exécuter des actions sur les résultats qu'il remonte (cf. man find chercher exec, execdir).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Merci pour votre réponse.
    En fait ma recherche concerne bien un «* find*» : s’il ne donne rien ( résultat de la commande vide ), je souhaite lancer une action.
    Y a-t-il un moyen de tester si le résultat d’une commande est vide ou non ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    pour quelle(s) raison(s) souhaites-tu utiliser find ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Pour faire une recherche de fichiers.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    très drôle.

    mais c'est des fichiers dont tu connais les noms, les emplacements... ?

    tu veux une solution adaptée à ta situation, alors il faut donner du contexte !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Si je ne trouve pas de fichier je veux juste pouvoir lancer une action…

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    tu me fatigues.
    c'est des fichiers dont tu connais les noms, les emplacements... ?

    tu veux une solution adaptée à ta situation, alors il faut donner du contexte !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Je te demande pardon ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    qu'est-ce que tu ne comprends pas ?
    c'est des fichiers dont tu connais les noms, les emplacements... ?

    tu veux une solution adaptée à ta situation, alors il faut donner du contexte !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Je recherche un certain type de fichier, si il n’y en a pas la commande FIND ne donne rien et je souhaiterais pouvoir lancer une action dans ce cas.
    Il n’y a rien de plus. Qu’ajouter d’autre ...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    un certain type de fichier
    [...]
    Qu’ajouter d’autre ...
    comment tu identifies le type de fichier !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    De type fichiers créés entre telle et telle date : une simple commande find basique.
    Elle affiche un résultat ou rien du tout.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    quand on me dit "type de fichier", je pense "type MIME". Tu vois que quelques explications ne nuisent pas !

    Attention ! tous les systèmes de fichiers (si je me souviens bien) ne gèrent pas la date de création des fichiers.
    en général, on ne dispose que de les dates de dernière modification, de dernier changement, et de dernier accès.

    ceci dit, comme je te l'ai déjà dit, find ne génère pas de code d'erreur spécifique s'il affiche ou non des données.

    je scripterait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
     
    declare -i nbF
     
    while read -d '' f; do nbF+=1; echo "do whatever with $f"; done < <(find ...tes commandes pour trouver tes fichiers... -print0 ) # le -print0 est essentiel, parce qu'on ne sait pas quels caractères peut contenir le nom du fichier, et qu'il est préférable de ne pas tripoter l'IFS !
    ((nbF)) || echo "do whatever there is no file"
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour ma part, j'aurais piper le find à un wc -l afin d'en obtenir le nombre de lignes retournées par find.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Ou plus simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if find ...... | grep -q '.*' ; then cmdok ; else cmdko ; fi
    exemple concret:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ ls fichier.txt
    fichier.txt
    $ ls fichier1.txt
    ls: 'fichier1.txt': Aucun fichier ou dossier de ce type
    $ if find . -maxdepth 1 -name "fichier.txt" | grep -q '.*' ; then echo ok ; else echo ko ; fi
    ok
    $ if find . -maxdepth 1 -name "fichier1.txt" | grep -q '.*' ; then echo ok ; else echo ko ; fi
    ko
    Cordialement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    j'ai supposé qu'il y a une action a réaliser sur/avec les fichiers trouvés...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #18
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Tu as bien supposé et merci beaucoup à toi et à ceux qui ont répondu :-)

  19. #19
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    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 278
    Points : 12 726
    Points
    12 726
    Par défaut
    C'est plus simple donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ find . -maxdepth 1 -name "fichier1.txt" -exec ls -l {} \; | grep '.*' || echo ko
    ko
    $ find . -maxdepth 1 -name "fichier.txt" -exec ls -l {} \; | grep '.*' || echo ko
    -rw-r--r-- 1 disedorgue disedorgue 9516 janv.  7  2020 ./fichier.txt
    Il faut juste que le find emet une sortie avant ou après l'exec
    Cordialement.

  20. #20
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2020
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 160
    Points : 59
    Points
    59
    Par défaut
    Merci 👍🏻

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment récupérer des valeurs dans le résultats d'une commande ?
    Par Spheerys dans le forum Général Python
    Réponses: 6
    Dernier message: 22/02/2013, 11h08
  2. bash: comment mettre le résultat d'une commande dans une variable
    Par helpcomm dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 03/10/2012, 23h26
  3. Réponses: 1
    Dernier message: 18/02/2010, 18h09
  4. [Batch] Comment passer le résultat d'une commande en variable
    Par Ohemeg dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 30/11/2009, 23h51
  5. Comment recevoir en directe le résultat d'une commande systeme en C++/C?
    Par Elv13 dans le forum Administration système
    Réponses: 17
    Dernier message: 02/06/2008, 16h16

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