curl을 사용하여 파일에 나열된 URL을 다운로드 하시겠습니까? [닫은]


15

다운로드해야 할 모든 URL이 포함 된 파일이 있습니다. 그러나 한 번에 하나의 다운로드를 제한해야합니다. 즉, 다음 다운로드는 이전 다운로드가 완료된 후에 만 ​​시작해야합니다. curl을 사용하여 가능합니까? 아니면 다른 것을 사용해야합니까?


3
안녕하세요, serverfault에 오신 것을 환영합니다. 이 사이트에서 질문을 할 때는 항상 귀하의 위치에 있지 않으며 어떤 환경을 사용하고 있는지 짐작할 수 없음을 기억하십시오. 이 경우 실행중인 OS를 지정하지 않아 제대로 응답하지 않습니다.
Stephane

답변:


20
xargs -n 1 curl -O < your_files.txt

2
이것이 가장 좋은 대답입니다. asker가 지정하지 않았더라도 모든 URL에 대한 응답을 개별 파일에 작성해야한다고 가정하는 것이 안전합니다. -OcURL과 함께 옵션을 사용하면 됩니다. xargs -n 1 curl -O < your_file.txt
LS

나는 동의한다. 편집했습니다.
Grumdrig 2012

이것이 정말 필요한 것입니다.
vu ledang

19

wget(1) 기본적으로 순차적으로 작동하며이 옵션이 내장되어 있습니다.

   -i file
   --input-file=file
       Read URLs from a local or external file.  If - is specified as file, URLs are read from the standard input.  (Use ./- to read from a file literally named -.)

       If this function is used, no URLs need be present on the command line.  If there are URLs both on the command line and in an input file, those on the command lines will be the first ones to be retrieved.  If
       --force-html is not specified, then file should consist of a series of URLs, one per line.

       However, if you specify --force-html, the document will be regarded as html.  In that case you may have problems with relative links, which you can solve either by adding "<base href="url">" to the documents
       or by specifying --base=url on the command line.

       If the file is an external one, the document will be automatically treated as html if the Content-Type matches text/html.  Furthermore, the file's location will be implicitly used as base href if none was
       specified.

3
asker는 cURL을 사용하여이 작업을 수행하는 방법을 알고 싶었으므로 적어도이를 사용하려는 솔루션을 포함해야합니다.
LS

4

이것은 쉘 스크립트 내에서 curl을 사용하는 것이 가능합니다. 그러나 curl과 같은 적절한 옵션을 연구해야합니다.

while read URL
    curl some options $URL
    if required check exit status 
          take appropriate action
done <fileontainingurls

2
나는 이것이 반 의사 코드라는 것을 이해하지만 while 루프에는 여전히 "do"가 있어야한다고 생각합니다.
nwk

1
@ nwk 그것은 전적으로 의사 코드이며 동의하지 않습니다.
user9517

URL에 앰퍼샌드가 포함되어 있으면 어떻게 되나요? 그들은 탈출 할 것인가? 이스케이프가 없으면 쉘은 백그라운드에서 명령을 실행해야한다고 생각합니다.
Jagger

2

@iain 답변을 기반으로하지만 적절한 쉘 스크립팅을 사용합니다-

while read url; do
  echo "== $url =="
  curl -sL -O "$url"
done < list_of_urls.txt

앰퍼샌드 등과 같은 이상한 캐릭터와도 작동합니다.

-O대신 파일로의 경로 재 지정 또는 적절한 것을 바꿀 수 있습니다.

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