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 :

find et existence d'un fichier


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut find et existence d'un fichier
    Bonjour,
    J'aimerais faire un test sur la taille d'un fichier afin de savoir si je dois arrêter mon programme. Si la commande find suivante trouve un fichier inférieur à 2Mo:

    find . -name "nom_fichier*.txt" -size -2M

    alors le programme est stoppé et un message est affiché:

    exit 1
    echo "Fin du programme"

    Pouvez-vous me dire comment faire çà en l'intégrant avec la commande find ?
    Est-t-il possible de retirer l'affichage des résultats de la commande find afin de seulement afficher le message si la condition est vérifiée?

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    si tu fais ton prog en C, il sufit d'utiliser la fonction stat
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    J'ai écrit ce programme en shell. Je crois qu'il est possible de compléter la commande find avec un "|" , et un "if" contenant ce que je veux faire au cas où la condition est vérifiée. Il y a peut être plusieurs solutions pour le faire et peut être avez-vous une idée pour une solution qui fonctionne?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 560
    Points : 19 393
    Points
    19 393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    find . -name "nom_fichier*.txt" -size -2M && {
    echo "Fin du programme"
    exit 1
    } || {
    echo "Le programme se poursuit..."
    }
    ...
    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Post-it Voir le message
    J'ai écrit ce programme en shell.
    alors ce n'est pas un programme mais un script..


    Pour ta question un petit "man find" te donnera des chose comme l'option exec, et dans ce exec tu peux faire un if ..


    [Grilled]

    Ou alors la solution ci-dessus
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses.
    La fonction stat m'a donné de bons résultats.

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 708
    Points : 31 007
    Points
    31 007
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Post-it Voir le message
    Bonjour,
    J'aimerais faire un test sur la taille d'un fichier afin de savoir si je dois arrêter mon programme. Si la commande find suivante trouve un fichier inférieur à 2Mo:

    find . -name "nom_fichier*.txt" -size -2M

    alors le programme est stoppé et un message est affiché:

    exit 1
    echo "Fin du programme"

    Pouvez-vous me dire comment faire çà en l'intégrant avec la commande find ?
    Est-t-il possible de retirer l'affichage des résultats de la commande find afin de seulement afficher le message si la condition est vérifiée?

    Merci d'avance.
    Apparemment, tu connais ton fichier donc t'as pas besoin de le chercher donc le find est inutile.
    En utilisant wc -c le_fichier_en_question tu obtiendras sa taille en octet. Te suffira donc simplement de tester si elle est inférieure ou supérieure à 20971520...

    Tu peux aussi essayer de voir avec la commande du qui donne un résultat analogue...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Apparemment, tu connais ton fichier donc t'as pas besoin de le chercher donc le find est inutile.
    En utilisant wc -c le_fichier_en_question tu obtiendras sa taille en octet. Te suffira donc simplement de tester si elle est inférieure ou supérieure à 20971520...

    Tu peux aussi essayer de voir avec la commande du qui donne un résultat analogue...


    très bonne remarque.. J'avais même pas vu
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Vérification de l'existence d'un fichier
    Par alfu dans le forum ASP
    Réponses: 2
    Dernier message: 06/10/2004, 13h29
  2. [C++ .NET] Test existence d'un fichier
    Par remixxl dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 26/07/2004, 19h21
  3. Réponses: 3
    Dernier message: 24/06/2004, 11h23
  4. tester l existence d un fichier sous turbo pascal
    Par Newllite dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/01/2004, 12h47
  5. Peut on tester l'existence d'un fichier ?
    Par Alamassepointcom dans le forum Flash
    Réponses: 2
    Dernier message: 10/10/2002, 12h10

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