Forum Programmation.shell GNU find: expression régulière?

Posté par  (site web personnel) .
Étiquettes :
1
22
nov.
2012

Bonjour,

Je cherche par une commande find (GNU) "simple" à trouver tous les fichiers vides dont le nom contient exactement 4 chiffres (sous Cygwin).

J'ai regardé la page de man, me suis renseigné un peu sur les expressions régulières, et ai tenté la commande suivante:

find . -type f -empty -name "[0-9]{4}"
Aucun résultat

Bizarrement la commande suivante donne le résultat attendu:
find . -type f -empty -name "[0-9][0-9][0-9][0-9]"

Qu'ai je raté?

  • # Find et regex

    Posté par  . Évalué à 10. Dernière modification le 22 novembre 2012 à 11:36.

    Bonjour,

    Avec -name, find interprète la suite de la même façon qu'un motif du shell, pas comme une expression rationnelle.
    Il faudrait donc utiliser -regex, mais avec quelques subtilités :
    - indiquer également "-regextype posix-egrep" pour que choisir la bonne syntaxe d'interprétation des regex (sinon, find utilise les regex emacs)
    - ne pas oublier que la correspondance se fait sur le chemin complet, tel qu'il est affiché par find, et pas seulement sur le nom du fichier.

    Donc, ta recherche devrait fonctionner avec quelque chose comme ça :
    find . -type f -empty -regextype posix-egrep -regex '.*/[0-9]{4}'
    A+
    JJD

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.