如何在正则表达式中实现 OR(选择)

发布于 2024-12-19 17:57:35 字数 570 浏览 0 评论 0原文

如何通过正则表达式实现 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 {} ";"

但如果我想要更多怎么办通过仅选择 txteps 文件来进行复杂的选择,如下所示

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

平安喜乐 2024-12-26 17:57:35

-name 模式不是正则表达式。如果是的话,使用 | 就可以了。然而,有效的方法是使用 find 的表达语言来发挥自己的优势。像这样:

find . -maxdepth 1 \( -name "*txt*" -o -name "*eps*" \) -type f -exec echo {} ";"

您使用 -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:

find . -maxdepth 1 \( -name "*txt*" -o -name "*eps*" \) -type f -exec echo {} ";"

You use -o to form an or-expression and parentheses (escaped for the shell) for grouping.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文