如何在正则表达式中实现 OR(选择)
如何通过正则表达式实现 OR 选择。例如,如果我有以下文件
/foo/bar/
├── foo1.txt
├── foo2.txt
├── foo3.txt
├── foo1.eps
├── foo2.eps
├── foo3.eps
├── foo1.pdf
├── foo2.pdf
└── foo3.pdf
,并且我想指定我只想要其中包含 1 或 2 的文件,我可以像这样执行 *[12]*
find . -name "*[12]*" -type f -maxdepth 1 -exec echo {} ";"
但如果我想要更多怎么办通过仅选择 txt
和 eps
文件来进行复杂的选择,如下所示
find . -name "*[txt || eps]*" -type f -maxdepth 1 -exec echo {} ";"
显然上面的示例不起作用,但我的意思是我想要一个 OR 运算符 | |
在这里。
How does one implement an OR selection via regular expressions. For example, if I have the following files
/foo/bar/
├── foo1.txt
├── foo2.txt
├── foo3.txt
├── foo1.eps
├── foo2.eps
├── foo3.eps
├── foo1.pdf
├── foo2.pdf
└── foo3.pdf
and I want to specify that I want only the ones with 1 or 2 in them, I can do *[12]*
like so
find . -name "*[12]*" -type f -maxdepth 1 -exec echo {} ";"
But what if I want more complex selection by only selecting the txt
and eps
files like so
find . -name "*[txt || eps]*" -type f -maxdepth 1 -exec echo {} ";"
Obviously the above example doesn't work, but what I mean is that I want an OR operator ||
here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
-name
模式不是正则表达式。如果是的话,使用|
就可以了。然而,有效的方法是使用 find 的表达语言来发挥自己的优势。像这样:您使用
-o
形成一个 or 表达式和括号(为 shell 转义)进行分组。The
-name
patterns are not regexes. If they were, using|
would work. What works, however, is using find's expression language to one's advantage. Like so:You use
-o
to form an or-expression and parentheses (escaped for the shell) for grouping.