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 :

recherche de fichier en console


Sujet :

Linux

  1. #1
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut recherche de fichier en console
    bonjour à tous,
    je cherche à faire une recherche de fichier dans une arborescence:
    je veux:
    -que les noms de fichier contienne une certaine chaine
    -que le nom du fichier ne contienne pas une certaine chaine
    -que dans le fichier il y ait une certaine chaine

    j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ./ -type f | grep "FRA" | xargs egrep "CIBL"
    ce qui me renvoie tous les fichiers avec leur chemin depuis la racine depuis laquelle je lance la commande dont le nom contient FRA et contenant CIBL

    cependant, comme ce sont des source et qu'on bosse avec svn, j'ai aussi le fichier contenus dans les reps .svn dont je n'ai pas grand chose à carrer... un petit man grep ne m'a pas donné le moyen d'exclure ces résultats... j'ai testé un ' grep "FRA" --exclude="svn" ' mais sans effet

    est-ce que quelqu'un aurait une solution? voire une autre méthode de recherche?
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 99
    Points : 93
    Points
    93
    Par défaut
    Je n'ai jamais eu à faire de recherche aussi précise avec find, mais tu devrais regarder du côte des regex avec find

    Tu pourra être plus précis sur les chaines de caractère que tu veut ou non.

    Pose nous ta commande quand tu aura trouvé

  3. #3
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut
    - tu peux utiliser l'option iname de find pour remplacer le premier grep
    - pour supprimer des résultats tu peux faire un grep -v PATRON
    - à la fin pour lister les fichiers au lieu du contenu, tu peux faire un grep -l

  4. #4
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    merci pour vos réponses!

    en fait le fait de voir la ligne de contenu m'arrange bien (pour être sûr de ma reche!!! :p ) donc je le laisse il me sort <nom de fichier+rep>:<ligne de contenu>

    et j'ai trouvé un truc qui marche (et avec un seul pipe!!!):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ./ -iname "*FRA*" -not -iname "*svn*"|xargs egrep "CIBL"
    là je recherche les fichier contenant 'FRA' mais pas 'svn' et ne garde que ceux qui contienne 'CIBL'

    (j'aurais dû regarder find --help plus tôt )
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  5. #5
    Membre averti Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Points : 359
    Points
    359
    Par défaut
    tu as aussi l'option -exec dans find qui peut te permettre d'enlever encore un pipe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ./ -iname "*FRA*" -not -iname "*svn*" -exec grep -l "CIBL" {} \;
    à voir après les options données à grep (-l pour seulement le nom de fichier, -H pour file:matching-pattern)

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

Discussions similaires

  1. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 11h43
  2. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 11h32
  3. Réponses: 14
    Dernier message: 25/10/2004, 22h33
  4. batch de recherche de fichier ...
    Par Félia dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2004, 16h54
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 11h15

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