【发布时间】:2016-04-29 18:50:25
【问题描述】:
我有一个文件夹,里面有一堆文件,我想把特定的文件放在一起。布局是这样的:
sample1_S99_L1_R1_001.fastq.gz
sample1_S99_L2_R1_001.fastq.gz
sample1_S99_L1_R2_001.fastq.gz
sample1_S99_L2_R2_001.fastq.gz
sample2_S88_L1_R1_001.fastq.gz
sample2_S88_L2_R1_001.fastq.gz
sample2_S88_L1_R2_001.fastq.gz
sample2_S88_L2_R2_001.fastq.gz
针对不同的样本等等。 我想将 sample1_S99_*_R1_001.fastq.gz 放入 1 个 gunzip 文件中。所以上面代码中分组的样本应该放在一起。
我会手动做这样的事情:
cat sample1_S99_L1_R1_001.fastq.gz sample1_S99_L2_R1_001.fastq.gz > sample1.R1.fastq.gz
和
cat sample1_S99_L1_R2_001.fastq.gz sample1_S99_L2_R2_001.fastq.gz > sample1.R2.fastq.gz
我的想法是自动化这个过程,我想出了这个:
ls | awk -F '[_.]' '{print $1}' > test.txt
sort -u test.txt > names_final.txt
while read line;do cat $line_*_*_R1_*.fastq.gz > $line.R1.fastq.gz;done < names_final.txt
while read line;do cat $line_*_*_R2_*.fastq.gz > $line.R2.fastq.gz;done < names_final.txt
我现在面临的问题是这些命令似乎将所有 R1 文件集中在一起。例如,如果我输入
ls sample1_*_*_R1_*.fastq.gz
我只得到我想要一起分类的文件。所以我不确定我的错误是否在这里。
有人有想法吗?
提前致谢。
【问题讨论】:
-
所以你希望
file_LX_001块在一起,然后file_LX_002在一起,等等?例子有点混乱 -
很抱歉给您带来了困惑。我想将这些具有相同样本名称和相同 R 值的文件放在一起。所以 R1 和 R2。
-
那么在你刚刚更新的输入中,哪些应该放在一起呢?都是 s99,然后是 s88,等等?
-
应该在一起的都具有相同的R值,所以R1和R2。所以我提供的示例文件的输出应该是:sample1.R1.fastq.gz sample1.R2.fastq.gz sample2.R1.fastq.gz sample2.R2.fastq.gz
-
请注意,在
$line_*_*_R2_*.fastq.gz中,这是用尾随下划线替换变量$line_,而不是您想要的$line。下划线是标识符中的有效字符(但破折号不是,因此如果文件名使用破折号而不是下划线,$line-*-*-R2-*.fastq.gz将起作用)。您可能需要:${line}_*_*_R2_*.fastq.gz,其中大括号分隔变量的名称。