我正在尝试使用带有正则表达式的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位整数?
答案 0 :(得分:1)
您可以使用此find命令:
find . -regextype posix-extended -type f -regex "^\./flmyptd2root-$EVENT_GENERATOR-[0-9]{6}\.root$"
find
默认使用BRE,其中{
和}
按字面意思使用,如上所述使用-regextype posix-extended
来正确解释范围量词{...}
。