wget이 파일을 다운로드하기 전에 파일 이름 수정(로컬 버전의 이름을 바꾸지 않음)

wget이 파일을 다운로드하기 전에 파일 이름 수정(로컬 버전의 이름을 바꾸지 않음)

나는 각 파일에 다른 이름을 가진 요약 사본과 큰 사본이라는 두 개의 사본이 있는 웹 사이트 파일 시스템을 가지고 있습니다. 예를 들어, 대용량 복사본 파일은 다음과 같습니다. 페이지/정보/GK2grkG23r_lg.html요약 사본에서 사전 확장 문자는 다음과 같이 변경됩니다.페이지/정보/GK2grkG23r_sh.html. 파일 시스템에서 wget을 실행하려고 하는데 리소스를 절약하기 위해 설계상 모든 링크가 작은 복사본을 가리키므로 큰 복사본이 필요합니다. 그래서 wget을 실행하는 동안페이지모든 요약 사본을 다운로드할 수 있습니다.

pages/info/GK2grkG23r_sh.html
pages/info/2Yp58xr4Ir_sh.html
pages/info/Lmk2nIj23r_sh.html
pages/info/M23Dka6D4r_sh.html

wget이 다운로드할 파일의 이름을 변경하고 싶습니다:

pages/info/GK2grkG23r_lg.html
pages/info/2Yp58xr4Ir_lg.html
pages/info/Lmk2nIj23r_lg.html
pages/info/M23Dka6D4r_lg.html

비록 wget이 찾을 파일이 첫 번째 세트를 가리킬지라도.

분명히 말하면 위의 첫 번째 이름 집합을 가진 파일을 다운로드한 다음 이름을 바꾸고 싶지 않습니다. wget을 실행하여 첫 번째 파일 목록을 다운로드하려고 시도하지만 문자를 약간 변경하여 두 번째 목록을 다운로드하려고 합니다. 이걸 할 수 있을까?

답변1

해결 방법을 시도해 볼 수 있습니다.

마일스톤은 다음과 같습니다.

  1. 전체 파일 목록을 다운로드하여 파일에 저장하세요.
  2. 파일 이름의 마지막 부분 변경
  3. 수정된 이름의 파일만 다운로드하세요.

filter.awk이와 비슷한 파일이 필요합니다

/^--.*--  http:\/\/.*[^\/]$/ { u=$3; }
/^Length: [[:digit:]]+/ { print u; }

단계별:

wget -r -np --spider http://yourhost | awk -f filter.awk  > My_List.txt
sed -i s/_sh.html/_lg.html/g My_List.txt
wget -x -i My_List.txt

크레딧:
나는 다음에서 영감을 얻습니다.이 답변.

답변2

먼저 인덱스 파일을 가져옵니다.

wget -O index.html "$URI"

그런 다음 URL을 다시 작성하십시오.

sed -i '/_sh\(\.html\)/_lg\1/g' index.html

(나는 sed를 사용했지만 XSLT 기반 접근 방식 등을 선호할 수도 있습니다. 선택하십시오.)

pages/info/*이제 수정된 인덱스 파일을 사용하고 원래 위치를 시작 기본 URI로 사용하여 모든 를 가져오도록 wget에 지시합니다 .

wget --recursive --level=1 \
    --input-file=index.html --force-html --base="$URI" \
    --accept-regex 'pages/info/.*_lg\.html'

주의하세요. 대부분의 긴 옵션에는 짧은 대안이 있습니다. 맨페이지를 참조하세요. 명확성을 위해 긴 형식을 사용했습니다.

관련 정보