对不同文件夹中的文件执行bash脚本

时间:2016-11-24 09:08:34

标签: linux bash

我在不同的文件夹中有几个同名的文件。我想并行执行我的bash脚本给所有这些脚本。是否可以将它们放在单独的.txt文件或同一个bash脚本中并执行?即,

all.tab文件

path/to/set1/my.bam
path/to/set2/my.bam
path/to/set3/my.bam

和bash,

#!/usr/bin/env bash
#$ -q cluster_name
#$ -cwd
#$ -N job_name
#$ -e /path/to/log
#$ -o /path/to/log
#$ -l job_mem=16G
#$ -pe serial 4

PICARD="path/to/picard"
BAM="/path/to/all.tab"

echo "validating bam file"

$PICARD/picard.jar ValidateSamFile I=$BAM MODE=SUMMARY

因此它将启动多个作业以并行猜测并在相应的文件夹中写入日志输出或其他输出文件。 如果有任何其他方式,我感谢任何帮助。 编辑:我将其调用为:qsub ./test.sh

2 个答案:

答案 0 :(得分:2)

您可以使用 find 命令,以便首先找到"在目录结构中具有该给定名称的所有文件。

然后您可以使用 xargs 使用" -P"选项,以便在并行中的find输出上运行命令。

有关详细信息,请参阅here

答案 1 :(得分:0)

我正在寻找类似的东西(但可能存在更优雅的方式)。

PICARD="path/to/picard"
BAMFILES="path/to/set1/test.bam
path/to/set2/test.bam
path/to/set3/test.bam"

for f in $BAMFILES
do 
    $PICARD/picard.jar ValidateSamFile I=$f MODE=SUMMARY
done