使用正则表达式量词查找命令,例如 {1,2}

使用正则表达式量词查找命令,例如 {1,2}

我一直在尝试创建一个 find 命令字符串,它将查找以数字 1-99 结尾的所有文件,但排除所有其他文件。

例如我想找到我的文件1 我的文件99但不是我的文件456并不是我的文件备份

我正在考虑的正则表达式是myfile[1-9]{1,2},但我无法让它与 find 一起使用。

find . -regex '.*myfile[0-9]{1,2}' 或者 find . -iname 'myfile[0-9]{1,2}'

据我所知,这是{1,2}不起作用的部分。

(顺便问一下,可以-name -regex互换使用吗?)

任何帮助表示赞赏。

答案1

如果您有 GNU find,则可以使用另一种正则表达式类型:

find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'

根据 GNUfind使用绝育的 Emacs 正则表达式语法默认情况下 - Emacs 支持\{from,to\}语法,但至少 GNUfind不支持它。

奇怪的是,参考手册中没有包含sed正则表达式语法的部分,所以谁知道它支持哪些部分。

答案2

你可以尝试

find . -regex '.*myfile[0-9][0-9]?'

或者

find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)

相关内容