리디렉션 할 때 올바른 이름의 파일을 얻는 방법은 무엇입니까?


117

그래서 Google과 Super User (및 스캔 맨 페이지 스캔)에서 검색 한 후 간단한 것 (답은 것)에 대한 답변을 찾을 수 없었습니다.

여기에 가면 :

http://www.vim.org/scripts/script.php?script_id=2340

그리고 테마를 다운로드하십시오 :

http://www.vim.org/scripts/download_script.php?src_id=9750

이렇게 :

wget http://www.vim.org/scripts/download_script.php?src_id=9750

아마도라는 파일로 끝날 것입니다 download_script.php?src_id=9750.

그러나이 molokai.vim파일을 다운로드하기 위해 브라우저를 사용하면 발생하는 것입니다.

원하는 효과를 위해 wget에 어떤 옵션을 지정해야합니까?

Curl과 동등한 명령으로도 괜찮을 것입니다.

답변:


162
-O file
--output-document=file

문서는 적절한 파일에 기록되지 않지만 모두 함께 연결되어 파일에 기록됩니다. -파일로 사용 하면 문서가 표준 출력으로 인쇄되어 링크 변환이 비활성화됩니다. ( ./-문자 그대로 파일로 인쇄하는 데 사용 -.)

그래서,

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750

또는 wget버전에서 지원하는 경우 --content-disposition 옵션을 사용하여이 문제를 해결할 수 있습니다.

wget --content-disposition http://www.vim.org/scripts/download_script.php?src_id=9750

매뉴얼 페이지에 따른 경고

--content-disposition

이 기능을 설정하면 "콘텐츠 처리"헤더에 대한 실험적 (완전한 기능이 아님) 지원이 활성화됩니다. 이로 인해 현재 "HEAD"요청에 대해 서버로의 추가 왕복이 발생할 수 있으며 몇 가지 버그로 인해 현재 기본적으로 활성화되어 있지 않습니다.

이 옵션은 "Content-Disposition"헤더를 사용하여 다운로드 한 파일의 이름을 설명하는 일부 파일 다운로드 CGI 프로그램에 유용합니다.

curl사용하여 동일한 자동 동작을 수행 할 수 있습니다 .

curl -JLO http://www.vim.org/scripts/download_script.php?src_id=9750

-O원격 이름을 사용하고 -J를 강제로 -O내용 - 처리 헤더가 아닌 URL에서 그 이름을 얻기 위해, 그리고 -L필요한 경우 리디렉션을 따른다.


2
이것이 자동이어야한다고 지정 했어야합니다
audio.zoom

내가 이해하는 것처럼 wget은 URL이 파일을 가리키고 wget이 완벽하게 지원하거나 지원하지 않을 수있는 컨텐츠 처리 헤더를 사용하여 URL을 다른 것으로 저장 해야하는 경우 웹 페이지에 의존하여 파일에 올바르게 알립니다. 따라서 wget을 사용하여 자동으로 수행 할 수 없습니다. 컬은 웹 페이지에 따라 다소 성공할 수 있습니다.
EightBitTony

요점은 복잡한 파싱없이 이러한 것들을 스크립팅 할 수 있다는 것입니다. curl은 괜찮지 만 지금까지 그 중 어느 것도 괜찮은 옵션을 수집 할 수 없었습니다.
audio.zoom

2
Aha-틀 렸습니다. 업데이트 된 답변을 참조하십시오. 이것이 바로 스택 교환 사이트가 잘 작동하는 이유입니다. 모두가 무언가를 배우고 심지어 사람들은 질문에 대답합니다!
EightBitTony

1
이것은 스택 익스체인지 포드 캐스트에서 저에게 효과적이었습니다. 감사.
Richard Campbell

75

wget을 사용하면 다음을 수행 할 수 있습니다.

wget --trust-server-names <url> 

서버가 제공 한 마지막 파일 이름을 사용하여 파일을 저장합니다.


2
--trust-server-names--content-disposition
제임스

3
--trust-server-names다음은 다른 파일로 경로 재지 정하고 경로 재 --content-disposition지정없이 응답 헤더에 지정된 이름으로 파일 이름을 지정합니다.
Asfand Qazi

1
이 기본 기능이 아닌 이유는 무엇입니까?!?!
hopeseekr

8
@hopeseekr주의 깊게 관찰하지 않으면 서버에 문제가있을 수 있으며 .bashrc 파일을 호출하십시오. lists.gnu.org/archive/html/bug-wget/2012-04/msg00059.html
Patrick Conheady

3

aria2c 를 사용할 수도 있습니다 -Content -Disposition 헤더와 잘 작동하는 것 같습니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.