我在macOS High Sierra 10.13.3上工作。我的shell是bash。
当我打字,echo {1,2}{3,4}
我得到:13 14 23 24
。
有没有选择只获得13 24
?
我有兴趣创建文件中两个位置一起变化的许多文件。例如,我想要的文件:
file1file1
file2file2
file3file3
写一些像file{1,2,3}file{1,2,3} option
而不是file1file1 file2file2 file3file3
会很方便。
我希望能够在命令中使用此扩展,例如:
touch file{1,2,3}file{1,2,3} option
创建三个文件。
我希望我正在寻找的功能是清楚的。
最终,我想要使用此功能的上下文是使用snakemake命令:
snakemake --cores 3 release{42,43,44}/file{42,43,44}.txt
我想要snakemake生成文件release42 / file42.txt,release43 / file43.txt和release44 / file44.txt。
如果我使用循环来实现这一点,文件将连续生成。但是,通过键入snakemake release42/file42.txt release43/file43.txt release44/file44.txt
,将同时生成三个文件。但是,由于我很懒,我想输入比snakemake release42/file42.txt release43/file43.txt release44/file44.txt
更短的东西。
得到13 14做
$ echo 1{3,4}
对于重复,还有其他方法
$ for i in {1..3}; do printf "file%dfile%d " $i $i; done
file1file1 file2file2 file3file3
与touch
一起使用
$ for i in {1..3}; do touch "file${i}file${i}"; done
或者,一次使用所有文件名
$ touch $(for i in {1..3}; do printf "file%dfile%d " $i $i; done)
使用循环来形成一个数组。
items=( )
for i in {42,43,44}; do
items+=( "release$i/file$i.txt" )
done
snakemake "${items[@]}"
这只运行snakemake
一次,列出了所有文件。