我有一個我認為需要回圈來解決的問題。
我有遵循命名約定的 fastq 檔案,所有檔案都在一個通用目錄中,例如 'allpools' :
ls allpools
2022_pool_1_Seq_GEX.fastq.gz
2022_pool_1_Seq_CMO.fastq.gz
2022_pool_2_Seq_GEX.fastq.gz
2022_pool_2_Seq_CMO.fastq.gz
我需要一個回圈來為“allpools”中的目錄創建與 fastqs 中一樣多的池編號,其中將呼叫生成的目錄:
pool1
pool2
然后是另一個回圈,原始 fastqs 被移動并放置在 gex 和 cmo 的相應目錄中。舉個例子 :
allpools/pool1/pool1_GEX #containing all gex fastqs of pool_1
allpools/pool1/pool1_CMO #containing all cmo fastqs of pool_1
####
allpools/pool2/pool2_GEX #containing all gex fastqs of pool_2
allpools/pool2/pool2_CMO #containing all cmo fastqs of pool_2
uj5u.com熱心網友回復:
前:
$ tree allpools/
allpools/
├── 2022_pool_1_Seq_CMO.fastq.gz
├── 2022_pool_1_Seq_GEX.fastq.gz
├── 2022_pool_2_Seq_CMO.fastq.gz
└── 2022_pool_2_Seq_GEX.fastq.gz
用于sed決議檔案名并生成目錄名:
$ for f in allpools/*; do d=$(sed -E 's%. (pool_[0-9] ). (GEX|CMO). %\1/\1_\2%' <<<$f); mkdir -p allpools/$d; mv -vi $f allpools/$d/; done
renamed 'allpools/2022_pool_1_Seq_CMO.fastq.gz' -> 'allpools/pool_1/pool_1_CMO/2022_pool_1_Seq_CMO.fastq.gz'
renamed 'allpools/2022_pool_1_Seq_GEX.fastq.gz' -> 'allpools/pool_1/pool_1_GEX/2022_pool_1_Seq_GEX.fastq.gz'
renamed 'allpools/2022_pool_2_Seq_CMO.fastq.gz' -> 'allpools/pool_2/pool_2_CMO/2022_pool_2_Seq_CMO.fastq.gz'
renamed 'allpools/2022_pool_2_Seq_GEX.fastq.gz' -> 'allpools/pool_2/pool_2_GEX/2022_pool_2_Seq_GEX.fastq.gz'
后:
$ tree allpools/
allpools/
├── pool_1
│ ├── pool_1_CMO
│ │ └── 2022_pool_1_Seq_CMO.fastq.gz
│ └── pool_1_GEX
│ └── 2022_pool_1_Seq_GEX.fastq.gz
└── pool_2
├── pool_2_CMO
│ └── 2022_pool_2_Seq_CMO.fastq.gz
└── pool_2_GEX
└── 2022_pool_2_Seq_GEX.fastq.gz
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/525080.html
標籤:重击循环
