중괄호 구문으로 여러 파일을 컬 다운로드 것을 알았습니다 . curl -OO

다음 구문으로 두 파일을 다운로드하려고합니다.

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.txthttp://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을 구분하는 데 사용됩니다.