正则表达式:尝试将文件名与6位整数匹配

时间:2016-12-19 21:20:01

标签: regex

我正在尝试使用带有正则表达式的find命令来匹配包含6位整数的文件名。

这是我正在运行的命令:

EVENT_GENERATOR="Se82.2nubb"
find ./ -type f -regex "^./flmyptd2root-$EVENT_GENERATOR-[0-9]{6}.root$"

以下是我希望匹配的文件名:

./flmyptd2root-Se82.2nubb-000005.root                                                                                             
./flmyptd2root-Se82.2nubb-000001.root
./flmyptd2root-Se82.2nubb-000004.root
./flmyptd2root-Se82.2nubb-000000.root
./flmyptd2root-Se82.2nubb-000003.root
./flmyptd2root-Se82.2nubb-100000.root
./flmyptd2root-Se82.2nubb-000002.root

如果我改为:

find ./ -type f -regex "^./flmyptd2root-$EVENT_GENERATOR-[0-9]*.root$"

但我不知道为什么当第一个表达式没有时它才有效。 (*重复匹配[0-9]我相信的任意次数,所以我猜这会选出所有可能的整数?)

如何让我的表达式只选择6位整数?

1 个答案:

答案 0 :(得分:1)

您可以使用此find命令:

find . -regextype posix-extended  -type f -regex "^\./flmyptd2root-$EVENT_GENERATOR-[0-9]{6}\.root$"

find默认使用BRE,其中{}按字面意思使用,如上所述使用-regextype posix-extended来正确解释范围量词{...}