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 :

grep sur les fichiers sans extension


Sujet :

Linux

  1. #1
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut grep sur les fichiers sans extension
    Bonjour,

    Je souhaiterais rechercher une chaîne de caractères uniquement dans les fichiers sans extension ( A savoir les fichiers qui ne contiennent pas . dans leur nom).
    Mon idée consistait à utiliser les expressions régulières je ne parviens pas à les utiliser dans ce contexte. J'ai vu plusieurs exemples concernant des expressions régulières mais uniquement pour la chaine à rechercher et pas le lieu de la recherche.

    ex:

    grep -ni ma_chaine /REP1/REP2/"\^\[*.*\]"

    --> ne fonctionne pas grep: can't open \^\[*.*\]

    j'avais mis des \ pour que l'interprétation des caractèrse ^, [, ]


    Je sollicite donc votre bienveillance ... et votre clairvoyance.

    Merci.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Sauf erreur de ma part, tu essaies de faire deux choses en même temps :
    trouver les fichiers ne contenant pas le caractère '.'
    Faire un grep dessus.

    Pour trouver des fichiers, tu peux utiliser la commande find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -a ! -name "*.*"
    Te liste, à partir du répertoire courant (find .) tous les fichiers (-type f) dont (-a) le nom n'est pas "*.*" (! -name "*.*")

    Ensuite, tu cherches à effectuer un grep. Celui-ci peut se faire dans le find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -a ! -name "*.*" -a -exec grep -ni ma_chaine {} \;
    Ce qui se lit :
    A partir du répertoire courant, pour tous les fichiers dont le nom ne contient pas un point, exécuter (-exec) "grep -ni ma_chaine" sur ces fichiers (ce qui est {} dans l'expression) et s'arréter là (ce qui se traduit par \; )

    Si tu ne comprends pas quelque chose, n'hésites pas à demander.

  3. #3
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut
    merci pour ton aide précieuse. Je note soigneusement ton exemple sur mon petit Memo Unix.

    Et si je souhaitais faire un find sur les fichiers sans extension, les fichiers sql et les fichiers ksh par exemple sans pour autant faire trois find disjoints.
    Ma question pour être plus clair comment introduire la notion de OU?

    find . -type f -a -name ((! "*.*")|"*.sql"|"*.ksh") ??

    Pourquoi? j'aimerais que les fichiers retournés par le find soient regroupés par arborescence et avec 3 find j'aurai tous les fichiers sans extension puis tous les SQL puis tous les ksh.

    Si ma question ne vous semble pas clair. n'hésitez pas à me demander des précisions.

    Merci !!

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Re,

    find est une commande très puissante, qui te permet de faire ce que tu veux (oh bah ca ca tombe bien alors !!!)

    Dasn mon précédent exemple, il y avait l'option -a, pour AND. Mais le find accepte aussi l'option -o, pour OR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find . \( -name "*.sql" -o -name "*.ksh" -o \(-type f -a ! -name "*.*" \) \)
    Ce qui se lit :
    cherche tous les fichiers à partir du répertoire courant (find . ) dont le nom est SOIT :
    • *.sql
    • *.ksh
    • un fichier dont le nom ne contient pas le caractère '.'


    Cordialement,

  5. #5
    Membre du Club Avatar de magic charly
    Inscrit en
    Février 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 167
    Points : 67
    Points
    67
    Par défaut
    Parfait! Je me coucherai un peu moins bête ce soir.

    Merci beaucoup !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/09/2012, 09h40
  2. Réponses: 3
    Dernier message: 11/08/2011, 17h40
  3. Réponses: 3
    Dernier message: 31/07/2010, 20h14
  4. copier tous les fichiers sans extension dans un meme repertoire
    Par soussou80 dans le forum Administration système
    Réponses: 1
    Dernier message: 26/03/2009, 13h02
  5. Réponses: 6
    Dernier message: 28/04/2004, 10h41

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