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