wget이 실제 파일 이름을 사용하도록 강제


50

wget스크립트에서 Google 문서 도구에서 일부 파일을 다운로드 할 때 파일 이름이 유지되지 않습니다. 예를 들면 다음과 같습니다.

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

브라우저에서 링크를 클릭하면 얻을 수있는 파일 pub?key=pyj6tScZqmEfbZyl0qjbiRQ대신으로 파일을 저장 indicatorhivestimatedprevalence15-49.xls합니다. 이 "브라우저와 같은"동작을 적용 할 수있는 방법이 wget있습니까?

답변:


90
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

당신을 위해 트릭을 할 것입니다.

그것은 아직 완전히 구현되지 않았고 때로는 약간 버그를 일으키는 것처럼 보이므로 기본 옵션이 아니므로 wget위험 부담으로 사용하십시오.


1
알아...! 어? ;)
Bruno Pereira

나는 실제로 웹 프로그래머가 아니기 때문에 "컨텐츠 처리"라는 구절을 찾지 는 못했을 것 입니다. HTTP 헤더를 수동으로보고 컨텐츠 처리 헤더를 발견하고 처리 해야하는 시간을 절약했습니다.
Chinmay Kanchi

와우 + 놀라운. THX u roc 좋은 생각입니다.
Kangarooo

@BrunoPereira, Google 스프레드 시트 파일을 다운로드하려고합니다. 그러나 파일에 대한 링크를 찾을 수 없습니다. Chinmay Kanchi와 같은 방식으로 wget을 사용할 수 있도록 Google 스프레드 시트 파일에 대한 링크를 얻는 방법을 말씀해 주시겠습니까? 미리 감사드립니다.
user22180

@ChinmayKanchi 나는 지난 15 년간 자신을 웹 프로그래머라고 부르지 만, 이것에 관해서는 항상 코드에서 더 의미있는 이름을 사용하려고 시도합니다.
tishma

3

curl 을 사용 하여 원래 파일 이름을 다운로드하고 유지할 수 있습니다 .

curl -OJL ${your_url}
  • 원격 이름의 경우 -O
  • 원격 헤더 이름의 경우 -J
  • 위치에 -L

curl 명령 행 옵션을 참조하십시오 .


0

Google 문서 링크는 실제로 서버에서 스크립트를 실행하여 원하는 파일로 파싱하도록 지시합니다. 내가 아는 한, 파일은 els 형식으로 서버에 존재하지 않지만 요청하면 런타임에 생성됩니다. 따라서 wget에는 얻을 것이 없습니다.

파일을 다운로드하려면 Google API http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#DownloadingDocs/ 를 사용해야합니다 .


예, 서버가 스크립트를 실행하도록 요청하여 .xls파일을 즉시 생성합니다 . 그러나 본격적인 브라우저에는 아무런 문제가 없습니다. 따라서 Docs API 없이도 가능합니다.
Chinmay Kanchi

내 생각은 브라우저에서 실행되는 스크립트가 API를 사용하므로 브라우저없이 그것을 수행하려면 스크립트를 다시 만들어야한다고 생각했습니다. 그 wget에 흥미로운 플래그가 있습니다.
Ethan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.