我目前正在使用大括号和通配符的组合来一次在 vlc 中播放多个文件:
vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
Run Code Online (Sandbox Code Playgroud)
但是数字总是完整的序列,有没有办法以某种方式更简单地指定它,也许像
vlc K20-{06-17}*
Run Code Online (Sandbox Code Playgroud)
? 也许seq以某种方式使用?
我可以用
$ echo K20-{$(seq -s, -f "%02.0f" 06 17)}*
K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有扩大*. 有什么办法吗?
ste*_*eve 13
正如@steeldriver 所指出的,K20-{06..17}*涵盖了它。
示例,使用echofor 测试/验证:
$ 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*
Run Code Online (Sandbox Code Playgroud)
该*会以及是否有匹配当前工作目录名的文件扩展。
所以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
Run Code Online (Sandbox Code Playgroud)