Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何通过';对于';命令_Bash - Fatal编程技术网

Bash 如何通过';对于';命令

Bash 如何通过';对于';命令,bash,Bash,我有多个样本,R1和R2读取为fastq.gz格式(这些文件相互补充)。我想在所有文件上运行BWA mem paired end parallel,一旦完成,每个R1和R2补充文件应生成一个sam文件。现在我正在根据两次读取制作两个sam文件 这是我想出来的,但它没有做我需要它做的事情 for i in `find -maxdepth 2 -iname *fastq.gz -type f`; do echo "bwa mem -t 12 /H.Sapiens/ucsc.hg19.fasta

我有多个样本,R1和R2读取为fastq.gz格式(这些文件相互补充)。我想在所有文件上运行BWA mem paired end parallel,一旦完成,每个R1和R2补充文件应生成一个sam文件。现在我正在根据两次读取制作两个sam文件

这是我想出来的,但它没有做我需要它做的事情

for i in `find -maxdepth 2 -iname *fastq.gz -type f`; do
   echo "bwa mem -t 12 /H.Sapiens/ucsc.hg19.fasta  ${i}_R1_001.fastq.gz  ${i}_R2_001.fastq.gz > ${i}_R1_R2.sam"
done
当它运行时,它看起来像这样

bwa mem -t 12 /H.Sapiens/ucsc.hg19.fasta  ./Sample_0747/0747_CGG_L001_R2_001.fastq.gz_R1_001.fastq.gz ./Sample_0747/0747_CGG_L001_R2_001.fastq.gz_R2_001.fastq.gz > ./Sample_0747/0747_CGG_L001_R2_001.fastq.gz_R1_R2.sam

bwa mem -t 12 H.Sapiens/ucsc.hg19.fasta  ./Sample_0748/0748_CCA_L001_R1_001.fastq.gz_R1_001.fastq.gz ./Sample_0748/0748_CCA_L001_R1_001.fastq.gz_R2_001.fastq.gz > ./Sample_0748/0748_CCA_L001_R1_001.fastq.gz_R1_R2.sam
-bash-4.1$
我知道问题出在我身上,但我该如何解决? 非常感谢

试试看

find -maxdepth 2 -iname \*fastq.gz -type f |
sed 's/_R[12]_001\.fastq\.gz$//' |
sort -u | 
while IFS= read -r f; do
   echo "bwa mem -t 12 /H.Sapiens/ucsc.hg19.fasta \"${f}_R1_001.fastq.gz\"  \"${f}_R2_001.fastq.gz\" > \"${f}_R1_R2.sam\""
done
*。首先,出于理智的考虑,将代码放入脚本中,如

cat > script < SCRIPT
  for i; do
    bwa mem -t 12 /H.Sapiens/ucsc.hg19.fasta "${i}_R"{1,2}_001.fastq.gz > "${i}_R1_R2.sam"
  done
SCRIPT
chmod +x script

*它表示“解析
ls
”,但它适用于解析任何用于人类消费的命令<代码>查找被明确调用


另一方面,如果在
find
的参数周围不加引号,shell可能会将它们解释为globs

find -iname *fastq.gz
可以扩展到

find -iname foofastq.gz barfastq.gz bazfastq.gz
你想要

find -iname '*fastq.gz'

如你所见,有两个不同的答案。因此,您可以添加
想要的输出
示例…;)
find -iname foofastq.gz barfastq.gz bazfastq.gz
find -iname '*fastq.gz'