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 :

Boucle sur tous les mots contenus dans un fichier texte


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2016
    Messages : 18
    Par défaut Boucle sur tous les mots contenus dans un fichier texte
    Bonjour

    débutant en programmation, mille excuses si cette question est évidente. Mais je n'ai pas trouvé la solution dans le forum ni dans les tutos...

    Mon problème : parmi un répertoire contenant des centaines de dossiers avec des milliers de fichiers dont le nom correspond à des noms de patient, je cherche les fichiers avec l'extension .rtf ou .doc à partir d'un fichier texte contenant les noms qui m'intéresse.
    En clair, j'ai un fichier texte comme celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    guillaume
    alban
    maurice
    mes fichiers sont nommés comme suivant : guillaume 2013.doc ou bien maurice 2012.rtf

    Je pensais m'en sortir avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/sh
    file=essai.txt
    while read -r ligne; do
        echo "$ligne"
        find "/path" -iname "$line*.doc" -o -iname "$line*.rtf"
    done    < $file
    Le problème est que la commande echo fonctionne très bien mais il ne trouve pas les fichiers correspondants (alors que je sais qu'ils existent)...
    Si je réduis mon fichier texte à un seul nom, alors le mini-programme fonctionne. J'en déduis que je n'arrive pas à extraire toutes les lignes...

    L'idée ensuite est de copier ces fichiers trouvés dans un dossier... mais je ferai ça après avoir trouvé le problème.

    Merci de votre aide.

    $SHELL : bash-3.2$
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    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 349
    Par défaut
    Bonjour,

    Déjà, il y a une erreur, tu fais un read ligne mais tu fais ton find avec une variable line, vois-tu le problème ?

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2016
    Messages : 18
    Par défaut
    Bonsoir
    merci, je ne sais pas comment je suis passé à coté... Désolé
    cordialement

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    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 349
    Par défaut
    Pas de soucis, c'est le genre de problème sur lequel on butte souvent.

    Par contre, étant donné le nommage de tes fichiers, ton pattern de recherche dans le find n'est peut-être pas assez précis.
    Un exemple avec 2 patients: julie et julien. Si tu ne veux rechercher que julie, tu trouveras malheureusement aussi julien car:
    julie*.doc prendra aussi bien julie *.doc et julien*.doc.
    Si tu veux être plus précis et si tes fichiers se nomment bien tous comme tu nous le dis, le pattern idéal serait quelque chose du genre:
    "$ligne [1-2][09][0-9][0-9].doc"

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

Discussions similaires

  1. [MySQL] ecriture de tous les lignes sql dans un fichier texte
    Par noche29 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2011, 15h29
  2. Réponses: 10
    Dernier message: 17/04/2009, 17h19
  3. Réponses: 1
    Dernier message: 01/12/2008, 18h03
  4. optimiser code sql access par boucle sur tous les chkbox
    Par thiefer dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/09/2008, 21h46
  5. [JDBC]Boucle sur tous les éléments du ResultSet
    Par Terminator dans le forum JDBC
    Réponses: 1
    Dernier message: 22/09/2005, 19h30

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