2013-04-07 3 views
1

전체 zip 파일을 다운로드하지 않고 원격 zip 아카이브에서 첫 번째 파일 이름 만 추출하려고합니다. 특히 빌드 번호를 dartium (link to zip file)으로 잡으려고합니다. 파일이 상당히 크기 때문에 전체를 다운로드하지 않으려 고합니다.zip 파일 스트림에서 첫 번째 파일 이름 만 가져 오시겠습니까?

전체를 다운로드하면 unzip -l은 첫 번째 파일을 0 2013-04-07 12:18 dartium-lucid64-inc-21033.0/으로보고합니다. 빌드 번호로 21033 부분을 구문 분석 할 수 있도록이 파일 이름 만 가져 오려고합니다. 내가 ASCII 모드에서 내 껍질을했을 때 그것은

_url="https://storage.googleapis.com/dartium-archive/continuous/dartium-lucid64.zip" 
curl -s $_url | head -c 256 | sed -n "s:.*dartium-lucid64-inc-\([0-9]\+\).*:\1:p" 

을 작업했지만, 최근 UTF-8로 전환 그것은 지금을 기리는되어 나오지도 보인다 :

나는이 (전체 해킹)하고 있었다 내 대본을 어기는거야.

export LANG= 
curl -s ... 

을하지만 그것은 더 큰 해킹처럼 보였다 :

나는 수행하여 해킹에 대해 생각했다.

더 좋은 방법이 있습니까?

+0

전체적인 것을 다운로드하지 않고도 파일 목록에 대한 정보를 얻으려면 멋진 솔루션입니다. 감사합니다! –

답변

1

먼저, 컬을 사용하여 바이트 범위를 설정할 수 있습니다.

다음으로 "문자열"을 사용하여 이진 스트림에서 모든 문자열을 추출하십시오.

"p"다음에 "q"를 추가하면 첫 번째 항목 만 찾은 후 종료됩니다.

curl -s $_url -r0-256 | strings | sed -n "s:.*dartium-lucid64-inc-\([0-9]\+\).*:\1:p;q" 

또는이 :

curl -s $_url -r0-256 | strings | sed -n "/dartium-lucid64/{s:.*-\([^-]\+\)\/.*:\1:p;q}" 

이 조금 더 빠르고 더 신뢰할 수 있어야합니다. 또한 Subversion을 포함하여 전체 버전을 추출합니다 (필요한 경우).

+0

+1 내 터치보다 덜 해킹 만합니다. – tjameson

관련 문제