70 votes

linux find regex

Je ne parviens pas à utiliser l'expression régulière de la commande find . Probablement quelque chose que je ne comprends pas à propos d'échapper à la ligne de commande.

Pourquoi ne sont-ils pas les mêmes?

 find -regex '.*[1234567890]'
find -regex '.*[[:digit:]]'
 

Bash, Ubuntu

70voto

bmk Points 6832

Vous devriez jeter un oeil sur le -regextype argument find , voir manpage :

       -regextype type
          Changes the regular expression syntax understood by -regex and -iregex 
          tests which occur later on the command line.  Currently-implemented  
          types  are  emacs (this is the default), posix-awk, posix-basic, 
          posix-egrep and posix-extended. 
 

Je suppose que le type emacs ne supporte pas la construction [[:digit:]] . Je l'ai essayé avec posix-extended et cela a fonctionné comme prévu:

 find -regextype posix-extended -regex '.*[1234567890]'
find -regextype posix-extended -regex '.*[[:digit:]]'
 

53voto

dogbane Points 85749

Les expressions régulières avec des classes de caractères (par exemple, [[:digit:]] ) ne sont pas prises en charge dans la syntaxe d'expression régulière par défaut utilisée par find . Vous devez spécifier un type de regex différent, tel que posix-extended pour pouvoir les utiliser.

Jetez un oeil à une expression régulière GNU Trouver la documentation qui vous montre tous les types regex et ce qu'ils soutiennent.

27voto

kurumi Points 10096

Notez que -regex dépend du chemin complet.

  -regex pattern
              File name matches regular expression pattern.  This is a match on the whole path, not a search.
 

Vous n'avez pas réellement besoin d'utiliser -regex pour ce que vous faites.

 find . -iname "*[0-9]"
 

1voto

Eh bien, vous pouvez essayer ceci '.*[0-9]'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X