![使用正则表达式量词查找命令,例如 {1,2}](https://linux22.com/image/29379/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E9%87%8F%E8%AF%8D%E6%9F%A5%E6%89%BE%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%BE%8B%E5%A6%82%20%7B1%2C2%7D.png)
我一直在尝试创建一个 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]" \)