wget으로 실제 이름을 가진 파일 다운로드


9

를 사용하여 웹 사이트에서 HTTP를 통해 파일을 다운로드하려고합니다 wget.

내가 사용할 때 :

wget http://abc/geo/download/?acc=GSE48191&format=file

라는 파일 만 얻습니다 index.html?acc=GSE48191.

내가 사용할 때 :

wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm

을 얻었 asd.rpm지만 실제 이름으로 다운로드하고 다운로드 한 파일의 이름을 수동으로 변경하고 싶지 않습니다.


다음 에 Bioinformatics 에 대해 이런 종류의 질문을 할 수 있습니다 . 여기서도 주제를 다루고 있으며 환영합니다. 그러나 현장에서 일하는 사람들로부터 더 많은 도움을받을 수 있습니다.
terdon

3
@terdon 생물 정보학 에 관한 주제에 대해 wget 및 * nix 쉘 동작에 대해 어떻게 질문하고 있습니까?
CVn

1
NCBI에서 정보를 추출하는 @ MichaelKjörling이 그랬으므로 제안했습니다. 이에 대한 답은 OP가 쉘 솔루션이 아닌 찾고있는 정보를 얻는보다 간단하고 직접적인 접근 방법 일 것입니다. 예를 들어 "여기에서이 정보를보다 쉽게 ​​얻을 수 있습니다"와 같은 것이 있습니다.
terdon

상기 봐 --trust-server-names인수 wget-
ivanivan

3
URL이 참조하는 자원의 "실제 이름"과 같은 것은 없다는 점에 유의해야합니다. 웹 서버는 일부 컨텐츠 및 해당 컨텐츠를 어떤 방식으로 설명하는 헤더로 요청에 응답하지만 파일이 전혀 필요하지는 않습니다.
IMSoP

답변:


30
wget --content-disposition 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

다운로드중인 tar파일은 웹 서버의 동적 링크에서 제공 하는 아카이브 (이진 파일)입니다. wget일반적으로 사용하는 URL의 일부를 사용하여 파일을 저장하지만이 경우 REST API 끝점 (또는 비슷한 것)이므로 이름이 다루기가 쉽지 않습니다 (여전히 유효한 이름이 될 것입니다. 파일 내용은 동일합니다).

그러나이 경우 서버는 실제 파일 이름이 포함 된 "Content Disposition"헤더를 제공하며이 옵션 wget을 사용하면 사용할 수 --content-disposition있습니다. 이 옵션은에 대한 내 설명서에서 "실험"으로 표시되어 있습니다 wget.

또한 쉘에서 &?문자를 해석하지 않도록 URL을 인용해야 합니다.


다음을 사용하는 것과 동등한 것 curl:

curl -J -O 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

또는 동등한 긴 옵션을 사용하십시오.

 curl --remote-header-name --remote-name 'https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

파일을 다운로드 한 후 압축을 풀어야합니다.

tar -xvf GSE48191_RAW.tar

이 특정 아카이브가 생성 된 방식으로 인해 아카이브의 파일을 현재 디렉토리에 압축 해제합니다 (따라서 새 디렉토리를 작성하고 아카이브를 이동하고 압축을 풀면 좋습니다). 이 아카이브의 파일은 gzip압축 된 CEL파일입니다.


8

쉘은 문자에 대한 일반적인 해석, 특히 ?와일드 카드 (여기서는 중요하지 않음) 및 &"배경 입력"으로 수행합니다. 쉘 응답이 직접 명령과 다르기 때문에 후자를 주목해야합니다.

그래서 당신은 인용해야합니다 :

wget 'http://abc/geo/download/?acc=GSE48191&format=file'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.