我一直在尝试创建一个 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]" \)