大括号扩展与非排列列表 {txtfile,index}{1..3}.{txt,html} 我希望 `{txtfile,index}` 与 `{txt,html}` 相对应

大括号扩展与非排列列表 {txtfile,index}{1..3}.{txt,html} 我希望 `{txtfile,index}` 与 `{txt,html}` 相对应

{txtfile,index}{1..3}.{txt,html}

我想{txtfile,index}{txt,html}
生产:
txtfile1.txt
txtfile2.txt
txtfile3.txt
index1.html
index2.html
index3.html

但这段代码将生成
我不想要的所有可能的组合txtfile1.htmlindex1.txt
所以下面的代码不起作用。
{txtfile,index}{1..3}.{txt,html}

我只是认为相应的列表扩展会很好(它们的用例几乎总是与大括号扩展相结合)
语法可以是:{txtfile:index}{1..3}.{txt:html}
因为我们只需要长度为 2 或以上的列表的此功能,所以总会有:所以我们知道它是一个相应的列表

这是一个非常长的使用 for 循环的解决方案和3线..
注意:此解决方案无法用于快速手动创建文件

fileNames=(txtfile index)
fileExtensions=(txt html)
for i in ${!fileNames[@]}; do echo ${fileNames[$i]}{1..3}.${fileExtensions[$i]}; done

一行复制粘贴:fileNames=(txtfile index); fileExtensions=(txt html); for i in ${!fileNames[@]}; do echo ${fileNames[$i]}{1..3}.${fileExtensions[$i]}; done

即使这很糟糕,它也做了 2 echo,所以 2 行..(如果我想做的所有事情都touch创建文件,它仍然有效)

txtfile1.txt txtfile2.txt txtfile3.txt
index1.html index2.html index3.html

答案1

你过度设计了这个:

txtfile{1..3}.txt index{1..3}.html

就是你所需要的。

答案2

列表

txtfile1.txt
txtfile2.txt
txtfile3.txt
index1.html
index2.html
index3.html

可以使用以下生成大括号扩展:

txtfile{1..3}.txt
index{1..3}.html

例子:

$ printf '%s\n' txtfile{1..3}.txt index{1..3}.html
txtfile1.txt
txtfile2.txt
txtfile3.txt
index1.html
index2.html
index3.html

您可以将其写为单大括号扩展

{txtfile{1..3}.txt,index{1..3}.html}

但你不会从中得到任何好处。

相关内容