Jai essayé de créer une chaîne de commande de recherche qui trouvera tous les fichiers qui se terminent par un nombre 1-99 mais en excluent tous les autres .

par exemple Je veux trouver myfile1 myfile99 mais pas myfile456 et non myfilebackup

Lexpression régulière à laquelle je » pense est myfile[1-9]{1,2} mais je ne peux « pas faire fonctionner cela avec find.

find . -regex ".*myfile[0-9]{1,2}" OU find . -iname "myfile[0-9]{1,2}"

Daprès ce que je peux voir, cest la partie {1,2} qui ne fonctionne pas.

(au fait pouvez-vous utiliser -name -regex de manière interchangeable?)

Toute aide appréciée.

Commentaires

  • -iname (et -name) utilisent des globs , ce qui nont pas cette syntaxe.

Réponse

Vous pouvez essayer

find . -regex ".*myfile[0-9][0-9]?" 

ou

find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \) 

Commentaires

  • Merci – la première ligne est worki ng pour moi. Javais essayé ceci avec -iname mais je ne pense ' que cela prend en charge la syntaxe ou bien je ' fais quelque chose de mal.

Réponse

Si vous avez GNU find, vous pouvez utiliser un autre type dexpression régulière:

find . -regextype sed -regex ".*myfile[0-9]\{1,2\}" 

Selon GNU find utilise un castré Syntaxe des expressions régulières Emacs par défaut – Emacs prend en charge la syntaxe \{from,to\}, mais au moins GNU find ne la prend pas en charge.

Étrangement, le manuel de référence ninclut pas de section sur la syntaxe des expressions régulières sed, alors qui sait quelles parties de celle-ci sont pris en charge.

Commentaires

  • sed like ed semble être un alias pour posix-basic, donc devrait être compatible avec POSIX BRE (même si prend en charge certains ex des tensions comme \+). Il ' nest pas compatible avec GNU sed où par exemple [\n] correspond à une nouvelle ligne au lieu de la barre oblique inverse ou n requis par POSIX. Voir aussi -regextype posix-extended pour les ERE POSIX (donc .*myfile[0-9]{1,2}), également avec des extensions comme \s ou \<
  • Je nai jamais connu -regextype. Il semble que si vous utilisez -regextype egrep, il semble que vous puissiez éviter les contre-obliques.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *