我在macOS High Sierra 10.13.3上工作。我的壳是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
短的内容。
答案 0 :(得分:3)
获得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)
答案 1 :(得分:3)
使用循环来形成数组。
items=( )
for i in {42,43,44}; do
items+=( "release$i/file$i.txt" )
done
snakemake "${items[@]}"
此操作snakemake
仅运行一次,列出所有文件。