다음 구문으로 두 파일을 다운로드하려고합니다.
curl -O http://domain/path/to/{file1,file2}
문제는 첫 번째 파일 만 실제로 로컬에 저장되고 두 번째 파일은 단순히 표준 출력으로 인쇄된다는 것입니다.
추가하면 -O
잘 작동 한다는 것을 알았습니다 .
curl -OO http://domain/path/to/{file1,file2}
그러나 파일 수가 너무 커지면 이것이 비현실적이지 않습니까? 예를 들어
curl -O http://domain/path/to/file[1,100]
내 질문은, curl
정확한 수를 추가하지 않고 한 번에 여러 개의 개별 파일을 다운로드 할 수있는 방법이 실제로 -O
없습니까?
답변
업데이트 : 이것은 curl 7.19.0에서 구현되었습니다. @Besworks 답변을 참조하십시오.
매뉴얼 페이지에 따르면 여러 개의 O를 사용하는 것 외에는 원래 파일 이름을 유지할 수있는 방법이 없습니다. 또는 고유 한 파일 이름을 사용할 수 있습니다.
curl http://{one,two}.site.com -o "file_#1.txt"
결과 http://one.site.com
에 저장되는 file_one.txt
과 http://two.site.com
에 저장되고 file_two.txt
.
또는 심지어 여러 변수
curl http://{site,host}.host[1-5].com -o "#1_#2"
~를 야기하는 http://site.host1.com
에 저장되고는 site_1
, http://host.host1.com
저장되고 host_1
등등합니다.
답변
나는이 질문에 이미 받아 들여진 대답이 있다는 것을 알고 있지만 실제로 이것을 할 수있는 방법이 있음을 지적해야한다고 생각합니다.
그만큼 --remote-name-all
옵션은 curl을 사용하는 것처럼 -O
또는 --remote-name
각 파일에 대해 동작하도록 지시 합니다.
https://curl.haxx.se/docs/manpage.html#–remote-name-all
이 옵션은 버전 7.19.0 이후에 사용 가능합니다
https://curl.haxx.se/changes.html#7_19_0
답변
curl을 사용하여 여러 파일을 다운로드하는 다른 방법이 있습니다.
urls="firstUrl secondUrl thirdUrl"
for url in $urls
do
curl -O "$url"
done
참고 : 필수 공백은 다른 URL을 구분하는 데 사용됩니다.