我目前正在使用大括号和 globing 的组合来同时播放 vlc 中的多个文件:
vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
但数字总是完整的序列,有没有办法以某种方式指定它更简单一点,也许像
vlc K20-{06-17}*
?也许seq
以某种方式使用?
我可以用
$ echo K20-{$(seq -s, -f "%02.0f" 06 17)}*
K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
但这似乎并没有扩大*
。有办法解决吗?
答案1
正如@steeldriver 所指出的,K20-{06..17}*
涵盖了它。
例如,使用echo
用于测试/验证:
$ echo vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
vlc K20-06* K20-07* K20-08* K20-09* K20-10* K20-11* K20-12* K20-13* K20-14* K20-15* K20-16* K20-17*
$ echo vlc K20-{06..17}*
vlc K20-06* K20-07* K20-08* K20-09* K20-10* K20-11* K20-12* K20-13* K20-14* K20-15* K20-16* K20-17*
*
如果当前工作目录中存在与名称匹配的文件,也会扩展。
这样vlc K20-{06..17}*
就会达到你想要的效果。
有关 bash 扩展的更多信息,请访问GNU Bash 参考手册 - 大括号扩展。或者从man bash
阅读:
序列表达式采用 {x..y[..incr]} 形式,其中 x 和 y 是整数或单个字符,而 incr(可选增量)是整数。
所以:
$ echo K20-{06..10}
K20-06 K20-07 K20-08 K20-09 K20-10
$ echo K20-{06..10..2}
K20-06 K20-08 K20-10