サーバーから端末に大量の文書をダウンロードする方法は?

サーバーから端末に大量の文書をダウンロードする方法は?

このサーバーからすべてのゲノムをダウンロードする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

最初の数値セットはゼロで埋められる必要があるため、次のものを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

関連情報