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 JJD . É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
[^] # Re: Find et regex
Posté par Sylvain Briole (site web personnel) . Évalué à 2.
Fonctionne parfaitement: merci!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.