*.fastq.gz
多くの例(R1とR2)のファイルを含むフォルダがあります。たとえば、「Raw_WGS」フォルダには次のファイルがいくつかあります。
Sample_1_R1.fastq.gz, Sample_1_R2.fastq.gz, Sample_2_R1.fastq.gz, Sample_2_R2.fastq.gz, Sample_3_R1.fastq.gz, Sample_3_R2.fastq.gz
サンプルシーケンスの名前に応じて、別のサブフォルダがある別の「Analytic」というフォルダがあります。名前はサブフォルダです
Sample_1, Sample_2, Sample_3
すべてのサンプルの名前のみを含むテキストファイルがあります。つまり、各サンプルとファイルを「Analytic」フォルダの名前に基づいてそのサブフォルダに移動したいとSample_1, Sample_2, Sample_3
思います。*_R1.fastq.gz
*_R2.fastq.gz
すべてのサンプルに対してこのタスクを一度に行う方法を教えてください。このコマンドを使用すると、各ファイルを一度に移動できますmv
。しかし、何千ものファイルがあります。だからスクリプトを実行して移動したいと思います。提案があれば教えてください。
答え1
私が正しく理解した場合、名前を含むファイルは必要ありません。ファイル名にはすでに存在します。。この試み:
for i in *_R{1,2}.fastq.gz; do
# use `cp` to be sure it works
cp "$i" /path/toAnalisys/"${i%_*}"
done
答え2
Samples.txtの各行に1つのSample_1〜3が含まれていると仮定すると、xargsコマンドを設定してmvを呼び出すことができます。
tree -F
< Samples.txt \
xargs -I {} -t mv -t Analysis/{}/ \
Raw_WGS/{}_R1.fastq.gz \
Raw_WGS/{}_R2.fastq.gz ;
tree -F
結果:
Before move...
.
├── Analysis/
│ ├── Sample_1/
│ ├── Sample_2/
│ ├── Sample_3/
│ ├── Sample_4/
│ └── Sample_5/
└── Raw_WGS/
├── Sample_1_R1.fastq.gz
├── Sample_1_R2.fastq.gz
├── Sample_2_R1.fastq.gz
├── Sample_2_R2.fastq.gz
├── Sample_3_R1.fastq.gz
└── Sample_3_R2.fastq.gz
After move...
.
├── Analysis/
│ ├── Sample_1/
│ │ ├── Sample_1_R1.fastq.gz
│ │ └── Sample_1_R2.fastq.gz
│ ├── Sample_2/
│ │ ├── Sample_2_R1.fastq.gz
│ │ └── Sample_2_R2.fastq.gz
│ ├── Sample_3/
│ │ ├── Sample_3_R1.fastq.gz
│ │ └── Sample_3_R2.fastq.gz
│ ├── Sample_4/
│ └── Sample_5/
└── Raw_WGS/