扫描文件目录并找到具有相同名称的重复项并将它们连接到一个文件中

扫描文件目录并找到具有相同名称的重复项并将它们连接到一个文件中

我有一个包含一堆文件的目录

例如:

ExperimentA_Rep1.bed  
ExperimentA_Rep2.bed
ExperimentA_Rep3.bed 
ExperimentB_Rep1.bed 
ExperimentD_Rep1.bed 
ExperimentC_Rep1.bed
ExperimentC_Rep2.bed
 . . . 
ExperimentZ_Rep5.bed

我需要扫描目录中的文件名,并将来自同一实验但不同复制的文件连接到一个新文件中。

IE,cat ExperimentA_Rep1.bed ExperimentA_Rep2.bed > ExperimentA_merged.bed

但我无法对其进行硬编码,它需要适用于任何实验数据集。

如果我运行一个 python 脚本那就没问题了。

答案1

下面假设文件名的 Rep 部分从 1 开始按顺序编号(即,除非还有 Rep1,否则不会有 Rep2 或 Rep3)。它使用“Rep1”文件的存在来决定是否针对特定系列的 Experiment* 文件运行 cat...仅当序列 ExperimentA* .. ExperimentZ* 中可能缺少某些文件时才需要这样做。如果这是不可能的,那么只需[ -e Experiment${f}_Rep1.bed ] &&从 cat 行中删除即可。

for f in {A..Z} ; do
    [ -e Experiment${f}_Rep1.bed ] && cat Experiment${f}_Rep*.bed > Experiment${f}_merged.bed
done

相关内容