{txtfile,index}{1..3}.{txt,html}
我想{txtfile,index}
与{txt,html}
生产:
txtfile1.txt
txtfile2.txt
txtfile3.txt
index1.html
index2.html
index3.html
但这段代码将生成
我不想要的所有可能的组合txtfile1.html
,index1.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}
但你不会从中得到任何好处。