첫 번째 게시물 여기서 엉망이 되었다면 죄송합니다 =)
Ubuntu 14.04lts 64비트 서버 버전을 사용합니다.
목록이 있습니다(URL 목록), 아래와 같이 다운로드할 URL만 한 줄에 하나씩 표시됩니다.
http://domain.com/teste.php?a=2&b=3&name=1
http://domain.com/teste.php?a=2&b=3&name=2
...
http://domain.com/teste.php?a=2&b=3&name=30000
보시다시피 파일에는 많은 줄이 있습니다(이 경우 30000줄). 그래서 나는 동시에 많은 URL을 다운로드하는 트릭을 사용했습니다.
cat url.list | xargs -n 1 -P 10 <<MAGIC COMMAND THAT WILL SAVE ME>>
문제는 이름 필드와 동일한 값으로 출력 파일의 이름을 바꾸고 싶다는 것입니다(예: 1.html, 2.html, ..., 30000.html ecc). 그리고 컬을 사용하여 파일 크기를 다음으로 제한합니다. 50KB. 따라서 컬 명령은 다음과 같아야 합니다.
curl -r 0-50000 -L $URL -o $filename.html -a $filename.log
어떻게 완료할 수 있나요?
파이프의 출력을 구문 분석할 수 있습니다.에코 $URL | sed -n -e 's/^.*이름=//p'그러나 두 변수($URL 및 $filename)에서 파이프의 출력을 얻기 위해 동일한 줄에서 이를 사용하는 방법을 모르겠습니다.
나는 성공하지 않고 이것을 시도했습니다.
cat url.list | xargs -n 1 -P 10 | filename=$(sed -n -e 's/^.*name=//p') ; curl -r 0-50000 -L $URL -o $filename.html -a $filename.log
미리 감사드립니다
답변1
seq 50000 |
parallel -P 10 curl -r 0-50000 -L '"http://domain.com/teste.php?a=2&b=3&name="'{} -o {}.html -a {}.log