regex - 尽管使用了 regextypeegrep,为什么 GNU find 实用程序在正则表达式和 egrep 上生成不同的匹配项?

标签 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

最佳答案

我尝试用这一系列命令进行重现:

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

关于regex - 尽管使用了 regextypeegrep,为什么 GNU find 实用程序在正则表达式和 egrep 上生成不同的匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11309239/

相关文章:

regex - 如何为 libmagic 编写魔术文件以检测 srt(字幕)文件

java - 检查字符串是否为长度为 1 到 5 的字母数字

javascript - 如果 window.location 通过变量以指定值结尾

linux - 无法使用查找实用程序找到文件

c++ - 反转字符串 find_first_not_of

linux - 使用 while/for 循环和 'find' 命令来复制文件和目录

matlab - 找到向量 b 的唯一索引的最快方法,其中数组 A(i,j) == b

java - 正则表达式从 errorString 捕获多个单词

Javascript Regex - 非拉丁字符和它们之间的空格

C++ 正确使用 std::set 对象