使用 bash 命令循环遍历多个文件

使用 bash 命令循环遍历多个文件

我有一个列出样本名称的文件

head sample_id.txt
PD26405a--PD26405b
PD26414a--PD26414d
PD26417a--PD26417b
...

我还有一个目录,其中包含我正在运行的程序的预处理步骤的输出

cd ./preprocessing_out
ls
PD26405a--PD26405b_allDirichletProcessInfo.txt
PD26405a--PD26405b_alleleFrequencies.txt
PD26405a--PD26405b_loci.txt
PD26405a--PD26405b_master.txt
PD26414a--PD26414d_allDirichletProcessInfo.txt
PD26414a--PD26414d_alleleFrequencies.txt
PD26414a--PD26414d_loci.txt
PD26414a--PD26414d_master.txt
PD26417a--PD26417b_allDirichletProcessInfo.txt
PD26417a--PD26417b_alleleFrequencies.txt
PD26417a--PD26417b_loci.txt
PD26417a--PD26417b_master.txt

Sample_id.txt 文件中的样本名称与 preprocessing_out 目录中的文件名匹配。

我想运行我的主要步骤脚本,该脚本仅需要 *_master.txt 文件。主文件如下所示:

cat PD26405a--PD26405b_master.txt
sample  subsample   datafile    cellularity sex cnadatafile indeldatafiles
PD26405a--PD26405b  PD26405a--PD26405b  PD26405a--PD26405b_allDirichletProcessInfo.txt  0.83    female  NA  NA

如果我只想为第一个样本运行它

这只是

Rscript --vanilla --slave /projects/dpclust_pipeline.R  -r 1 -d /projects/preprocessing_out -o /projectsdp_out -i /projects/preprocessing_out/PD26405a--PD26405b_master.txt


--r is ("run_sample"), type="integer", default=NULL, help="Sample to run".
--d is the directory that preprocessing results stored
--o is the directory that final output directory
--I is the path to master.txt 

我总共有超过 150 个样本,我想在带有 for 循环的 bash 脚本中运行这个 Rscript。 r=1 指第一个样本 (PD26405a--PD26405b),r =2 指 (PD26414a--PD26414d),依此类推。

我该如何调整我的代码?

答案1

要在获得另一个文件时用 r 进行计数,您可以执行以下操作:

r=1
while read sample
do
  Rscript --vanilla --slave /projects/dpclust_pipeline.R  -r ${r} -d /projects/preprocessing_out -o /projectsdp_out -i /projects/preprocessing_out/${sample}_master.txt
  r=$(( r + 1 ))
done < path/to/sample_id.txt

相关内容