我正在尝试以下命令:
ls myfile.h1.{`seq -s ',' 3501 3511`}*
Run Code Online (Sandbox Code Playgroud)
但ls
提出错误:
ls: cannot access myfile.h1.{3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511}*: No such file or directory
Run Code Online (Sandbox Code Playgroud)
似乎ls
认为整行是文件名而不是通配符模式.但是,如果我只是ls myfile.h1.{3501,3502,3503,3504,3505,3506,3507,3508,3509,3510,3511}*
在终端中复制该命令,我会按预期获得列表.
为什么要在完整的工作中键入命令,而不是使用seq
?
seq
你的情况不需要,试试
$ ls myfile.h1.{3500..3511}
Run Code Online (Sandbox Code Playgroud)
如果你想使用seq
我建议使用格式选项
$ ls $(seq -f 'myfile.h1.%g' 3501 3511)
Run Code Online (Sandbox Code Playgroud)
但我认为没有任何理由这样做.
更新: 请注意,我没有注意到原帖中的字符串.有了这个,支撑延伸仍然是首选方式
$ ls myfile.h1.{3500..3511}*
Run Code Online (Sandbox Code Playgroud)
如果你的bash支持零填充,甚至可能将公共数字分解出去
$ ls myfile.h1.35{00..11}*
Run Code Online (Sandbox Code Playgroud)
如果没有,你可以提取至少3
$ ls myfile.h1.3{500..511}*
Run Code Online (Sandbox Code Playgroud)
请注意,seq
替代方法不适用于globbing.
其他答案有更多细节......