Luk*_*s88 23 bash find regular-expression
我一直在尝试创建一个 find 命令字符串,它将查找以数字 1-99 结尾的所有文件,但排除所有其他文件。
例如,我想找到myfile1 myfile99但不是myfile456而不是myfilebackup
我正在考虑的正则表达式是,myfile[1-9]{1,2}
但我无法将其与 find 一起使用。
find . -regex '.*myfile[0-9]{1,2}'
或者
find . -iname 'myfile[0-9]{1,2}'
从我所见,它{1,2}
是不起作用的部分。
(顺便说一句,你可以-name -regex
互换使用吗?)
任何帮助表示赞赏。
l0b*_*0b0 20
如果您有 GNU find,则可以使用另一种正则表达式类型:
find . -regextype sed -regex '.*myfile[0-9]\{1,2\}'
Run Code Online (Sandbox Code Playgroud)
根据 GNU 的说法,默认情况下find
使用中性的 Emacs 正则表达式语法- Emacs 支持\{from,to\}
语法,但至少 GNUfind
不支持它。
奇怪的是,参考手册没有包含关于sed
正则表达式语法的部分,所以谁知道它的哪些部分被支持。
l0b*_*0b0 19
你可以试试
find . -regex '.*myfile[0-9][0-9]?'
Run Code Online (Sandbox Code Playgroud)
或者
find . \( -name "myfile[0-9][0-9]" -o -name "myfile[0-9]" \)
Run Code Online (Sandbox Code Playgroud)