Skip to content

Instantly share code, notes, and snippets.

@bynaki
Created November 28, 2015 23:29
Show Gist options
  • Save bynaki/d294493f4cdda283f32b to your computer and use it in GitHub Desktop.
Save bynaki/d294493f4cdda283f32b to your computer and use it in GitHub Desktop.
cURL :: 파일 다운로드 받기 - 응답을 파일에 쓰기 - 파일명으로 저장하기 - 여러 파일 다운로드 받기

cURL :: 파일 다운로드 받기

먼저, curl 은 커맨드 라인에서 URL 형태의 리소스를 요청/응답할 수 있는 도구다.

전체 매뉴얼은 커맨드 라인에서 man curl 을 호출해 볼 수 있고,

curl 사이트의 문서 페이지 (http://curl.haxx.se/docs/manpage.html) 에서도 확인할 수 있다. 아래는 몇 가지 옵션을 사용한 유용한 예제이다.

응답을 파일에 쓰기

$ curl http://example.com/resource > foo.txt

옵션 없이 호출하는 curl 커맨드는 표준 출력으로 응답을 출력하는데, 위와 같이 출력을 리다이렉트해서 파일에 쓸 수 있다.

파일명으로 저장하기

$ curl -o foo.txt http://example.com/foo.txt

-o 옵션으로 리소스의 파일명을 지정해 다운로드할 수 있다.

$ curl -O http://example.com/foo.txt

-O 옵션을 사용하는 경우, 리소스의 파일명을 그대로 사용한다.

여러 파일 다운로드 받기

$ curl -O http://example.com/foo[0-9].txt

위 코드는, foo0.txt 부터 foo9.txt 파일을 다운로드 받는다.

$ curl -O http://example.com/foo-[a-z][0-9].txt

[]는 여러 번 조합할 수 있고, 위 코드는 foo-a0.txt 부터 foo-z9.txt 까지의 파일을 다운로드 받는다.

$ curl -O http://example.com/{foo,bar,baz}.txt

중괄호({})를 써서 위와 같이 호출할 수도 있고, foo.txt, bar.txt, baz.txt 를 다운로드 받는다.

for 문으로 여러 파일 다운로드 받기

$ files="foo bar baz"
$ for name in files; do
    curl -O "http://example.com/${name}.txt"
  done

싱글 라인으로 호출하는 경우, 가끔 제대로 다운로드 받아지지 않는 경우가 있는 것 같다.

왜인지 정확히 살펴보진 않았지만, 위와 같이 for 구문으로 호출하는 방법으로 우회할 수 있다.

덧) 리눅스 기반에서는 curl 대신, wget 이 설치되어 있고, 사용 방법은 대체로 비슷하다.

참고:

{"noteId":"1515068f152-a2f7c485","main":"1515068f152-a2f7c485.md","title":"cURL :: 파일 다운로드 받기 - 응답을 파일에 쓰기 - 파일명으로 저장하기 - 여러 파일 다운로드 받기 - for 문으로 여러 파일 다운로드 받기"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment