*.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의 각 라인에 하나의 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/