![使用 bash 命令循环遍历多个文件](https://linux22.com/image/15062/%E4%BD%BF%E7%94%A8%20bash%20%E5%91%BD%E4%BB%A4%E5%BE%AA%E7%8E%AF%E9%81%8D%E5%8E%86%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6.png)
我有一个列出样本名称的文件
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