所以我在 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/