首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >linux查找正则表达式

linux查找正则表达式
EN

Stack Overflow用户
提问于 2011-04-12 21:06:47
回答 4查看 115.9K关注 0票数 73

我在使用find命令的正则表达式时遇到问题。可能有一些我不理解的关于在命令行上进行转义的事情。

为什么这些不一样呢?

代码语言:javascript
复制
find -regex '.*[1234567890]'
find -regex '.*[[:digit:]]'

Bash,Ubuntu

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-12 21:21:00

find使用的默认正则表达式语法不支持具有字符类的正则表达式(例如[[:digit:]])。您需要指定一个不同的正则表达式类型,比如posix-extended,才能使用它们。

看看GNU Find的正则表达式documentation,它显示了所有的正则表达式类型及其支持的内容。

票数 56
EN

Stack Overflow用户

发布于 2011-04-12 21:15:42

您应该了解一下find-regextype参数,请参阅manpage

代码语言:javascript
复制
      -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. 

我猜emacs类型不支持[[:digit:]]构造。我在posix-extended上试用了一下,结果和预期的一样:

代码语言:javascript
复制
find -regextype posix-extended -regex '.*[1234567890]'
find -regextype posix-extended -regex '.*[[:digit:]]'
票数 71
EN

Stack Overflow用户

发布于 2011-04-12 21:18:51

注意,-regex依赖于整个路径。

代码语言:javascript
复制
 -regex pattern
              File name matches regular expression pattern.  
              This is a match on the whole path, not a search.

你实际上并不需要使用-regex来做你正在做的事情。

代码语言:javascript
复制
find . -iname "*[0-9]"
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5635651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档