仅回显包含 chr1 而不包含 chr10 的 iten 并馈入并行

问题描述 投票:0回答: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

我需要将它们作为块按 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 文件,然后将其输入到每列并行

bash pattern-matching gnu-parallel
1个回答
0
投票
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/*
© www.soinside.com 2019 - 2024. All rights reserved.