다른 폴더에 다운로드할 파일 이름이 포함된 파일(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) 파일을 가지고 있다고 가정합니다.