2

我想使用 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

4

1 回答 1

4

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

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

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

更新

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

LC_ALL=C find . -regextype posix-egrep -regex '^.*/[a-z][^/]*$' -type f
于 2012-07-03T12:07:36.587 回答