このサーバーからすべてのゲノムをダウンロードする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
最初の数値セットはゼロで埋められる必要があるため、次のものを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
。