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 :

Recherche fichier Linux


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut Recherche fichier Linux
    Bonjour,

    Quelle méthode puis-je utiliser pour rechercher sur mon disque tous les fichier qui ont, par exemple, une taille égale ou supérieure à 10 Mb ?
    Quelle méthode puis-je utiliser pour rechercher tous les fichiers contenant une chaine de caractère xyz ?

    D'avance merci pour votre aide.

    Christian

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    man find
    man grep

  3. #3
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par Pouic
    man find
    man grep
    Tout à fait ...

    Et c'est aussi accessible en ligne sur http://man.developpez.com, ici :

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    Merci pour l'info.
    Mais en fait la commande find ne semble pas agir comme je le désire.
    find / -size 100k me trouve les fichiers qui ont exactement 100k, ce que j'aimerais c'est qu'elle me trouve tout ce qui est égale ou supérieur.

    Merci d'avance

  5. #5
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par c-ve
    find / -size 100k me trouve les fichiers qui ont exactement 100k
    Et : Trouvera les fichiers de plus de 100k.


    Et : Trouvera les fichiers de moins de 100k.

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    En effet ca fonctionne merci :-)
    Par contre avec grep ca ne donne rien, j'aimerai par exemple chercher sur la totalité de mon disque tous les fichier contenant le text org, mais ca ne marche pas

  7. #7
    Membre éclairé Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Points : 770
    Points
    770
    Par défaut
    il faut jouer avec find, grep mais la commande find / +100k | grep org te donnera aussi les fichiers ou org est dans le nom

  8. #8
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    find / | grep org

    y'as ptetre mieux ... (j'aurais pas du repondre :p)

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    Merci, mais en fait ca me donne la liste des fichiers dans le nom contient org, ce qu'il me fait c'est que org soit contenu dans le fichier et non dans son nom

  10. #10
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Attention, flinguage des performances en vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / +100k -exec grep org {}\;
    ou aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep org $(find / +100k -print)
    Dans un cas comme dans l'autre, il ne faut pas espérer le résultat dans l'instant ... le disque dur va pas mal chauffer

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Pourquoi ne pas utiliser locate.

    Si tu dois souvent faire ce genre de recherche un petit script utilisant locate devrait faire ça rapidement.

    Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
    #
    # exemple trouver tous les fichiers contenant "test" de plus de 500 octets
    # -->  mylocate test 500
    #
    for fichier in $(locate $1 | grep '/'$1'[^/]*$')
    do
         ls -l $fichier | awk '$5 >= '$2' {print}'
    done
    exit 0
    Inconvénient: la bdd de locate doit être à jour. Mais, en général on met updatedb en cron une ou deux fois par jour, à des moments creux.

  12. #12
    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
    man grep donne :
    grep -R pour recherche recurcive ..... pas terrible en performance mais faute de meiux ...

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    grep en tête de pipe (ha! ha!) fera une recherche sur le contenu des fichiers il me semble.

    Il vaudrait donc d'abord mieux piper une liste de fichiers dans grep. Soit par un find comme suggéré plus haut soit avec un locate amélioré. Le résultat d'un locate est quasi immédiat pour une bdd à jour.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Un simple :
    find <rep> <options> -print | xargs grep <chaine>

  15. #15
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    GREP(1)                                                                                                                 GREP(1)
     
    NAME
           grep, egrep, fgrep - print lines matching a pattern
     
    SYNOPSIS
           grep [options] PATTERN [FILE...]
           grep [options] [-e PATTERN | -f FILE] [FILE...]
     
    DESCRIPTION
           Grep  searches  the  named  input FILEs (or standard input if no files are named, or the file name - is given) for lines
           containing a match to the given PATTERN.  By default, grep prints the matching lines.
     
    ..........
     
           -R, -r, --recursive
                  Read all files under each directory, recursively; this is equiv-
                  alent to the -d recurse option.
    Il n'y a donc pas besoin de find ou autre devant, sauf a vouloir un filtre particulier sur le type de fichier.

    UIL serait bon que certain prennent la peine de regarder le manuel et le fils de la question avant toutes reflexion ou affirmation.

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Je viens de relire mon post plus haut qui semble t'avoir énervé. Mon "ha! ha!" était un rire d'autosatisfaction sur le jeux de mot "tête de pipe" (foireux, il est vrai). Ce n'était pas un rire de moquerie, loin de là. J'essaye toujours de rester courtois.

    La question du posteur était de trouver des noms fichiers répondant à certains critères.

    Je dis simplement qu'utiliser grep comme premier flux dans une recherche depuis la racine force le système à ouvrir tous les fichiers pour trouver un match du motif dans le contenu des fichiers.

    GREP(1) Manuel de l'utilisateur Linux
    (...)
    DESCRIPTION
    Grep recherche dans les FICHIERs indiqués (ou depuis l'entrée standard si aucun fichier n'est fourni, ou si le
    nom - est mentionné) les lignes correspondant à un certain MOTIF. Par défaut, grep affiche les lignes qui
    correspondent au motif.
    Il est beaucoup plus efficace de d'abord générer un flux sur des noms de fichiers, avec find, ls ou locate et ensuite de le piper dans un grep.

    Ou alors je n'ai rien compris à la question de départ.

  17. #17
    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
    Mais non je ne m'enerve pas , seulement :

    Citation Envoyé par c-ve
    Par contre avec grep ca ne donne rien, j'aimerai par exemple chercher sur la totalité de mon disque tous les fichier contenant le text org, mais ca ne marche pas
    .......

    Merci, mais en fait ca me donne la liste des fichiers dans le nom contient org, ce qu'il me fait c'est que org soit contenu dans le fichier et non dans son nom
    en faite le poseur avait 2 questions distinctes ....

    Voila le pourquoi de ma reponse ......

    Ensuite le debats sur le pipe avant apres avec ou sans et un peu prematuré me semble t-il, le questionneur ne paraissant pas experimenté du tout. Qu'il se familiarise deja avec des syntaxes simples et bien comprisent avant de se lancer dans des syntaxes plus "complexes"

    le grep, comme tout autre commande , accepte tres bien des "filtres" sur les noms de fichiers, du genre :
    grep -r "org" [0-9]toto[A-Z].txt

    par exemple .

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Merci, mais en fait ca me donne la liste des fichiers dans le nom contient org, ce qu'il me fait c'est que org soit contenu dans le fichier et non dans son nom
    Citation Envoyé par MarcG
    en faite le poseur avait 2 questions distinctes ....
    Ooops. N'avais pas vu celle-là. Je retire donc ma remarque inappropriée

    Désolé MarcG.

Discussions similaires

  1. modifier la date d' un fichier linux
    Par dj.motte dans le forum Linux
    Réponses: 2
    Dernier message: 24/07/2006, 02h55
  2. [Wanted] Recherche fichier VBAXL8.HLP (Aide VBA Excel 97)
    Par USV dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2006, 22h04
  3. Taille de fichier (Linux)
    Par j4xl dans le forum Linux
    Réponses: 3
    Dernier message: 24/01/2006, 14h38
  4. Serveur de fichier Linux
    Par MrEddy dans le forum Réseau
    Réponses: 3
    Dernier message: 07/04/2004, 12h17

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