서버에서 터미널로 많은 양의 문서를 다운로드하는 방법은 무엇입니까?

서버에서 터미널로 많은 양의 문서를 다운로드하는 방법은 무엇입니까?

이 서버에서 모든 게놈을 다운로드하는 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및 파일을 가져올 수도 있습니다.UnXY

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.

관련 정보