我有一个包含一堆文件的目录
例如:
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