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 :

Comment vérifier l'existance d'1 fichier sans savoir le nom?


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut Comment vérifier l'existance d'1 fichier sans savoir le nom?
    Bonjour à tous,

    voilà j'ai un traitement qui génère 1, 2 ou 3 fichiers.
    J'aimerais trouver un moyen de vérifier automatiquement si après l'exécution de mon script au moins 1 fichier a été créé.

    voici les répertoires dans lesquels sont générés les fichiers :

    /u07/wrk/transfert/femme
    /u07/wrk/transfert/homme
    /u07/wrk/transfert/mutant
    mon programme traite une liste de personnes qui peuvent être soit homme, soit femme, soit mutant et génère les fichiers en conséquence.
    Par exemple si la liste comprend 2 hommes et 1 mutant alors il ya aura 1 fichier généré dans
    /u07/wrk/transfert/homme
    et un autre dans
    /u07/wrk/transfert/mutant
    Autrement dit, il doit y avoir en sortie au moins un des 3 répertoires rempli.

    Je mets en sortie 1 si au moins un des répertoire est rempli. Mon problème c'est que je ne connais pas à l'avance le nom des fichiers générés.

    Voici mon code :

    RESULT=0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    test -s /u07/wrk/transfert/femme/nom_inconnu.txt
    RESULT=`expr $RESULT + $?`
    test -s /u07/wrk/transfert/homme/nom_inconnu.txt
    RESULT=`expr $RESULT + $?`
    test -s /u07/wrk/transfert/mutant/nom_inconnu.txt
    RESULT=`expr $RESULT + $?`    
     
    if [ $RESULT = 0 ]
    then
    exit 0
    else
    exit 1
    fi
    Savez-vous comment je pourrais mettre 1 juste en demandant s'il existe un fichier dans tel ou tel répertoire et sans en donner le nom ??

    Merci beaucoup pour votre aide !!

    Biz.Cat

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    ça m'a l'air d'un peu ressembler à une usine à gaz ton histoire ...

    es tu sûr que '=' fonctionne dans if ? Le mieux c'est d'utiliser les paramètres possible qu'on peut voir dans
    dans tes conditions de if

    Pourquoi est ce que tu ne pourrais pas faire que ton premier traitement génère une sortie avec les fichiers créés ?

    Pourrais tu davantage détailler le premier traitement ? Le contrôles tu ? peux tu le modifier ? en quel langage est il ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut
    le premier traitement est en PL/SQL, je peux le modifier oui.
    mais il n'y a pas une syntaxe qui dit si un répertoire est vide ou pas ??

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    tu peux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    etienne@info1:~/test $ ls
    fic4  test
    etienne@info1:~/test $ ls | wc -w

    Il y a peut être mieux, et peut être des exceptions ...
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Si tes noms de fichiers ne contiennent aucun espace, la commande précédente fera l'affaire.

    sinon tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    etienne@info1:~/test $ ls -l
    total 8
    -rw-r--r--  1 etienne etienne  0 2005-09-28 11:46 aze bla
    -rw-r--r--  1 etienne etienne 26 2005-09-20 16:28 fic4
    -rw-r--r--  1 etienne etienne 78 2005-09-20 16:23 test
    etienne@info1:~/test $ echo "`ls -l | wc -l` - 1" | bc
    3
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    oui c'est probablement une usine à gaz .....
    utilise les commande A JOUR du shell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for i in femme homme mutant
    do
        if (( $(ls /u07/wrk/transfert/$i/| wc -l | awk '{print $1}') != 0 ))
        then
            # y a un fichier la dedans
            echo $i pocede le fichier 
            # pas la peine de continuer on a trouver
            break
        fi
    done
    # ici $i contien le nom du repertoire (home, femme ,.......)
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 126
    Points : 68
    Points
    68
    Par défaut
    ok merci bcp je vais essayer ça !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/09/2007, 09h51
  2. Comment tester l'existance d'un fichier sans instancier un objet File?
    Par Hamdi Hedhili dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/08/2007, 11h13
  3. Réponses: 1
    Dernier message: 18/02/2007, 20h30
  4. [Conception] Verifier l'existence d'un fichier sans même l'ouvrir
    Par vaovao dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/11/2006, 15h44
  5. Comment ouvrir un fichier sans connaitre son nom
    Par APoLLoN1234 dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2006, 18h04

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