为什么GNU找到实用程序在正则表达式上生成不同的匹配到egrep,尽管使用regextype egrep?

时间:2012-07-03 10:43:30

标签: regex find

我想使用find查找以小写字母开头的目录中的每个文件。 一个简单的正则表达式结合find应该可以解决这个问题(我不需要处理文件名中的空格)。

所以我尝试了find . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type f。它返回,除了我认为不应该匹配的其他内容,./config/Config.scala

所以我认为我的正则表达式是错误的,然后使用egrep本身进行测试:echo './config/Config.scala' | egrep '^.*/[a-z][^/]*$'。没有比赛。

find做什么我错过了什么?我已经知道-regex操作相对文件路径而不是文件名(我不喜欢,但这是另一个问题)。查找版本是4.4.2

1 个答案:

答案 0 :(得分:4)

我试图用这一系列命令重现:

mkdir testtmp
cd testtmp
mkdir config
touch config/Config.scala
find . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type f

并没有输出。我也找到了4.4.2,由Debian打包。

<强>更新

我敢打赌,这是一个语言环境,[a-z]匹配超过我们都知道的26个小写字母。试试这个:

LC_ALL=C find . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type f