Linux

連接子目錄下的多個文件

  • November 16, 2012

我的目錄結構如下

x:\Project_2012-158A\Sample_4041

SampleSheet.csv
4041_CGTACG_L002_R1_001.fastq
4041_CGTACG_L002_R2_001.fastq
4041_CGTACG_L006_R2_001.fastq
4041_CGTACG_L006_R1_001.fastq

x:\Project_2012-158A\Sample_4027

SampleSheet.csv
4027_TAGCTT_L002_R2_001.fastq
4027_TAGCTT_L006_R1_001.fastq
4027_TAGCTT_L002_R1_001.fastq
4027_TAGCTT_L006_R2_001.fastq

x:\Project_2012-158A\Sample_D425

SampleSheet.csv
D425_ACTGAT_L008_R2_001.fastq
D425_ACTGAT_L008_R1_001.fastq
D425_ACTGAT_L004_R2_001.fastq
D425_ACTGAT_L004_R1_001.fastq

我想為每個樣本分別連接帶有“R1”和“R2”的文件。我知道

cat file1.fastq file2.fastq > concatenation.fastq 

將給予連接,但我如何使用單個腳本對所有子目錄執行此操作?

cd /path/to/Project_2012-158A &&
for dir in Sample*/; do
   for r in R1 R2; do
       outfile=${dir%/}_${r}.fastq
       glob=*_${r}_*.fastq
       cat "$dir"/$glob > "$dir/$outfile" &&
       rm -f "$dir"/$glob
   done
done

像這樣:

cat ./*/*R2* > result

*- 匹配一切

請注意,這將獲得R2文件名中的每一次出現。

引用自:https://unix.stackexchange.com/questions/55731