이 서버에서 모든 게놈을 다운로드하는 300자 미만의 bash 스크립트(.sh)를 작성해야 합니다.ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/(fa.gz 확장자 포함) 압축을 풉니다. 첫 번째 작업은 글을 쓰는 것인데
wget ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_01/hs_alt_CHM1_1.1_chr1.fa.gz | gunzip
22개 파일에 대해서는 할 수 없습니다. CHM과 chr 옆의 숫자를 제외하고 모든 파일의 이름이 동일한 것으로 나타났습니다. 예를 들어, 10번째 게놈은ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_10/hs_alt_CHM1_1.1_chr10.fa.gz
일종의 재귀 코드를 작성해야 한다고 생각하지만 bash에 대한 경험이 많지 않으므로 도움을 주시면 대단히 감사하겠습니다. 감사합니다!
답변1
간단한 루프로 충분합니다.
for i in {1..22}
do
wget "ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_${i}/hs_alt_CHM1_1.1_chr${i}.fa.gz"
gunzip "hs_alt_CHM1_1.1_chr${i}.fa.gz"
done
루프 인덱스는 단지 숫자일 필요는 없으며 다음을 통해 MT
및 파일을 가져올 수도 있습니다.Un
X
Y
for i in {1..22} MT Un X Y
첫 번째 숫자 집합은 0으로 채워져야 하므로 다음을 printf
사용할 수 있습니다.
또는:
firsti="$(printf "%02d" $i)"
wget "ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens/CHR_${firsti}/hs_alt_CHM1_1.1_chr${i}.fa.gz"
MT Un X Y
각 루프에 대해 테스트를 실행할 수 있지만 더 쉬운 방법은 raw 를 사용하여 문자( )를 별도의 루프로 이동하는 것입니다 wget
.