J'ai essayé de créer une string de command de search qui finda tous les dossiers qui se terminent par un nombre 1-99 mais excluent tous les autres.
Par exemple, je veux find monfile1 monfile99 mais pas monfile456 et non monfile
La regex à laquelle je pense est myfile[1-9]{1,2}
mais je ne peux pas le faire fonctionner avec find.
find . -regex '.*myfile[0-9]{1,2}'
find . -regex '.*myfile[0-9]{1,2}'
OU find . -iname 'myfile[0-9]{1,2}'
find . -iname 'myfile[0-9]{1,2}'
D'après ce que je peux voir, c'est la partie {1,2}
qui ne fonctionne pas.
(d'ailleurs pouvez-vous utiliser -name -regex
interchangeable?)
Toute aide appréciée.
Tu pourrais essayer
find . -regex '.*myfile[0-9][0-9]?'
ou
find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)
Si vous avez GNU find, vous pouvez utiliser un autre type d'expression régulière:
find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'
Selon GNU find
utilise une syntaxe d'expression régulière Emacs par défaut – Emacs supporte la syntaxe \{from,to\}
, mais au less GNU find
ne le supporte pas.
Curieusement, le manuel de reference n'inclut pas de section sur la syntaxe d'expression rationnelle sed
, donc qui sait quelles parties sont supscopes.