別のフォルダにダウンロードするファイル名を含むファイル(list.url)があります。構造は次のとおりです。
コンテンツlist.url:
フォルダAのlist.urlコンテンツ:
https://www.encodeproject.org/files/ENCFF002CEL/@@@download/ENCFF002CEL.bed.gz
https://www.encodeproject.org/files/ENCFF002DBD/@@download/ENCFF002DBD.bed.gz
https://www.encodeproject.org/files/ENCFF002DDJ/@@@download/ENCFF002DDJ.bed.gz
https://www.encodeproject.org/files/ENCFF738TKN/@@download/ENCFF738TKN.bed.gzフォルダBのlist.url:
https://www.encodeproject.org/files/ENCFF558JBX/@@download/ENCFF558JBX.bed.gz
https://www.encodeproject.org/files/ENCFF004WYV/@@download/ENCFF004WYV.bed.gz
Input
フォルダ A/list.url
フォルダ B/list.url
Output
フォルダA/
https://www.encodeproject.org/files/ENCFF002CEL/@@@download/ENCFF002CEL.bed.gz https://www.encodeproject.org/files/ENCFF002DBD/@@download/ENCFF002DBD.bed.gz https://www.encodeproject.org/files/ENCFF002DDJ/@@@download/ENCFF002DDJ.bed.gz https://www.encodeproject.org/files/ENCFF738TKN/@@download/ENCFF738TKN.bed.gz フォルダB / https://www.encodeproject.org/files/ENCFF558JBX/@@download/ENCFF558JBX.bed.gz
https://www.encodeproject.org/files/ENCFF004WYV/@@download/ENCFF004WYV.bed.gz
私は次のようなネストされたループを試しています。
a="folderA folderB"
for i in $a;
do
for j in list.url;
do
wget -i $i/$j;
done;
done
しかし、問題は、list.urlを入力として使用するのと同じディレクトリにファイルがダウンロードされないことです。どんなアイデアがありますか?
答え1
ディレクトリを変更する必要があります。
変える
for j in list.url;
do
wget -i $i/$j;
done;
渡す
for j in list.url;
do
(cd $i ; wget -i $j )
done;
これにより、各フォルダのファイルがダウンロードされます。
- サブシェルを作成するには括弧が必要です。
- 私はあなたが複数の(list.url)ファイルを持っていると仮定します。