linux - bash 通配符 n 位

标签 linux bash wildcard

所以我在 tmp 目录中有以下文件:

 file.0
 file.1
 file.t9
 file.22
 file.4444

如果我只想列出以“.digits”(0, 1, 22, 4444) 结尾但不是 (t9) 结尾的文件,我可以尝试使用这样的通配符:

 ls tmp/file.{[0-9],[0-9][0-9],[0-9][0-9][0-9],[0-9][0-9][0-9][0-9]}

但是我得到了以下带有丑陋错误的结果

 ls: cannot access tmp/file.[0-9][0-9][0-9][0-9]: No such file or directory
 file.0
 file.1
 file.22
 file.4444

我也尝试过使用 {0..999},但这也会导致相同类型的错误(以及更多错误)。 关于如何在没有专家错误的情况下执行此操作的任何线索?

最佳答案

至少在 bash 4 中,当启用 extglob shell 选项时:

shopt -s extglob
ls /tmp/file.+([0-9])

那里的模式+([0-9])匹配一位或多位数字。

您可以在 man bash模式匹配部分阅读更多相关信息。

更新

实际上,正如@chepner 指出的那样,由于 extglob 是在 2.02 版中引入的,这应该适用于您今天遇到的几乎所有 bash,除非您拉动了您的从岩石或其他东西中分发。

关于linux - bash 通配符 n 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368577/

相关文章:

linux - 如何从 Linux 网站备份访问电子邮件

linux - 打印顶部输出的第二帧

excel - 文件名通配符的返回值

asp.net - 如何告诉 ASP.NET Forms 身份验证不对某些文件扩展名进行身份验证?

linux - 查找两个文件的列中具有相同值的行

c# - Mono Assembly 未解决

linux - 我没有从这个 if 语句和使用退出代码的回显提示中得到预期的结果

linux - 一次移动和更改目录

带有通配符的 Java 抽象泛型方法用具体类型实现

c++ - 如何在Linux的QTCreator中用dlopen打开的共享库中设置断点