我的文件夹中有以下文件
11111-chr1A1.txt
11111-chr1C2.txt
11111-chr1D3.txt
11111-chr114.txt
11111-chr10A1.txt
11111-chr10-C2.txt
11111-chr1003.txt
11111-chr10-4.txt
我需要将它们作为块按 chr{number} 并行输入。 chr{number} 应该是精确的模式匹配,这就是在这种情况下导致问题的原因
例如
parallel "echo {1}"
应该输出
11111-chr1A1.txt
11111-chr1C2.txt
11111-chr1D3.txt
11111-chr114.txt
然后是第二块:
11111-chr10A1.txt
11111-chr10-C2.txt
11111-chr1003.txt
11111-chr10-4.txt
我尝试过:
for i in {1..10}
do
parallel "echo {1/}" ::: *chr"$i"*txt
done
总是同时输出所有文件,因为模式 chr1 和 chr10 是叠加的
如果需要,可以预先创建一个 CSV 文件,例如将 csv 文件的第一列定义为所有 chr1,然后将第二列定义为 chr10 文件,然后将其输入到每列并行
parallel -j1 'mkdir -p out/{}; mv *{}* out/{}' ::: chr{10..1..1}
do_group() {
cd "$1"
parallel echo ::: *
}
export -f do_group
parallel --tag do_group ::: out/*