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 :

find et expression régulière


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut find et expression régulière
    Bonjour à tous,
    je souhaiterais savoir si il est possible avec un find + une expression régulière de lister tous les fichier qui ont cinq 0 consécutif dans leur nom (ex: toto00000). En php j'aurai utilisé #0{5}# mais dans un find je ne sias pas comment faire

    merci d'avance piour ceux qui m'éclaireront

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    février 2008
    Messages
    7 004
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 7 004
    Points : 18 035
    Points
    18 035
    Par défaut
    Bonjour,

    il existe une option -regex, dont on peut modifier le comoprtement en définissant -regextype.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Merci pour ce retour,
    j'ai essayé avec -regex mais ca n'a rien donnée ...
    Je vais voir regextype

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    février 2008
    Messages
    7 004
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 7 004
    Points : 18 035
    Points
    18 035
    Par défaut
    j'ai essayé avec -regex
    ah, le fameux « ça marche pô ! » !

    mais "ça marche pas" comment ? quelle commande as-tu entrée ?

    il me semble que la regex spécifiée est considérée être entre ^ et $, c'est-à-dire commencer au début de l'expression et finir à la fin de l'expression, contrairement à grep, sed, awk, et autres, qui considèrent que l'expression indiquée peut-être n'importe où.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    avril 2008
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : avril 2008
    Messages : 2 011
    Points : 5 546
    Points
    5 546
    Par défaut
    Citation Envoyé par alex8276 Voir le message
    je souhaiterais savoir si il est possible avec un find + une expression régulière de lister tous les fichier qui ont cinq 0 consécutif dans leur nom (ex: toto00000). En php j'aurai utilisé #0{5}# mais dans un find je ne sias pas comment faire
    Pas besoin d'expression régulière si le "5" est une constante!


  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Bonjour,
    désolé pour le délai et merci pour vos retour.

    j'ai testé des choses de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    find . -regextype grep -regex 'totot_tata_[.]_^0*.csv', 
    find . -regextype grep -regex 'totot_tata_*_0{5}'
    find . -regextype grep -regex '0\{5\}'
    find . -name 'totot_tata_*_0{5,6}.csv'
    find . -name 'totot_tata_*_[B]*_[1-9]*_[1-9].csv'
    find . -name 'totot_tata_*_[B]*_2+*_[1-9].csv'
    ...
    Et ca retourne jamais rien. J'ai plein de fichier toto_tata_date_000000 et toto_tata_date_091517 (091517 etant l'heure)

    ca par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'toto_tata_*_[B]*000000*.csv'
    fonctionne j'ai bien mes fichiers terminant par 000000.csv mais je n'arrive toujours pas récupérer uniquement ceux qui contiennent l'heure
    (effectivement c'est plus simple comme l'a montré Jack-ft pour les 5 zéros)

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    4 021
    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 021
    Points : 11 898
    Points
    11 898
    Par défaut
    Pour le type de fichier toto_tata_date_00000.csv, si tes noms de fichiers sont cohérents, la réponse de Jack-ft est suffisante, sinon:
    via -name:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name '*_*_*_000000.csv'
    via -regextype grep -regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -regextype grep -regex '.*_.*_.*_0\{6\}.csv'
    Pour le type de fichier toto_tata_date_091517.csv' :
    via -name:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name '*_*_*_[0-9][0-9][0-9][0-9][0-9][0-9].csv'
    via -regextype grep -regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -regextype grep -regex '.*_.*_.*_[0-9]\{6\}.csv'
    Pour bien comprendre, le find n'identifie les fichiers pour -name ou -regex que si les expressions régulières masquent la totalité du nom de fichier et non juste une portion (comme le disait N_BaH).
    Cordialement.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2011
    Messages : 278
    Points : 63
    Points
    63
    Par défaut
    Merci beaucoup !

Discussions similaires

  1. Utilisation des expressions régulières dans Find/Replace
    Par Kicker dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 22/06/2009, 01h20
  2. Réponses: 7
    Dernier message: 27/07/2005, 12h41
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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