wget 또는 Ubuntu의 다른 http 파일 다운로더가 와일드카드를 지원합니까?

wget 또는 Ubuntu의 다른 http 파일 다운로더가 와일드카드를 지원합니까?

내 MediaWiki 확장 기능을 자동으로 업데이트하는 bash 스크립트를 작성하고 싶습니다. 이 웹사이트를 사용할 것 같습니다.https://extdist.wmflabs.org/dist/extensions/그렇게 하려면. 그러나 여기서 볼 수 있듯이 각 타르볼 파일 이름에는 마지막 대시(-) 뒤에 문자와 숫자가 무작위로 조합되어 있습니다. 그래서 제가 원하는 것은 이런 종류의 이름을 가진 파일만 다운로드하는 방법입니다. extname-REL1_25*.tar.gz여기서 *는 이름의 와일드카드가 들어갈 위치이고 extname제가 원하는 확장자의 이름을 나타냅니다.

답변1

wget 중괄호 확장

패턴에 따라 여러 파일을 다운로드하려면 wget과 함께 중괄호 확장을 사용하세요.

예:

wget -c https://extdist.wmflabs.org/dist/extensions/GoogleDocTag-REL1_{22-45203b7,23-249c6f2,24-3186a71,25-10e101f}.tar.gz

선택적 -c 플래그는 다운로드가 중지된 동일한 지점에서 일시 중지되거나 중단된 경우 다운로드를 계속합니다. 이 -c옵션은 많은 수의 파일을 다운로드하고 중단 없이 모든 파일을 일괄적으로 다운로드하려는 경우에 유용합니다.

wget은 목록에서 여러 파일을 다운로드합니다.

예:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -E -H -k -K -p -e robots=off -i ./list.txt    

wget 재귀적 허용/거부 옵션

재귀적 승인/거부 옵션
    -A acclist --accept acclist
    -R rejlist --rejlist 거부
        쉼표로 구분된 파일 이름 접미사 또는 패턴 목록을 지정합니다.
        수락하거나 거부합니다. 와일드카드 문자인 *,
        ?, [ 또는 ]가 acclist 또는 rejlist의 요소에 나타나면 다음과 같습니다.
        접미사가 아닌 패턴으로 처리됩니다. 이 경우, 당신은
        쉘을 방지하려면 패턴을 따옴표로 묶어야합니다.
        확장하는 것부터요.-A "*.mp3"또는-A '*.mp3'.

예:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -A "Vector*.tar.gz" -E -H -k -K -p -e robots=off -i ./list.txt  

-A및 옵션 모두 -R모든 파일을 다운로드한 다음 수락 및 거부 옵션은 패턴과 일치하지 않는 다운로드된 파일을 삭제합니다. 이것은 매우 비효율적입니다. 이를 수행하는 더 빠른 방법은 무엇이든 다운로드하기 전에 list.txt 파일에서 패턴 일치를 수행하여 list.txt에서 원하지 않는 파일을 모두 제거하는 것입니다.

다음에서 모든 파일을 다운로드한다고 가정합니다.https://extdist.wmflabs.org/dist/extensions/다음 조건을 만족하는 것입니다.

  • 버전 1.25
  • 선택된 MediaWiki 확장만

모든 링크가 포함된 list.txt 파일을 이미 만들었다고 가정합니다.https://extdist.wmflabs.org/dist/extensions/, 패턴 일치를 지원하는 텍스트 편집기에서 list.txt를 열고 list.txt의 내용을 필터링하여 문자열 1_25(버전 1.25 참조)이 있는 줄과 일치시킨 다음 해당 결과를 필터링하여 ~20 확장자를 가진 줄( 20번은 중요하지 않습니다.) 다운로드하려는 항목을 선택하세요. 그런 다음 new-list.txt라는 새 파일에 결과를 쓰고(파일 이름 new-list.txt는 중요하지 않음) wget의 -i옵션 다음에 new-list.txt를 사용하여 여러 파일(이 예에서는 최대 20개)을 다운로드합니다. 로컬 또는 외부 파일에서 URL을 읽습니다.

이 방법의 추가 개선은 찾고 있는 두 개 이상의 확장과 일치하는 문자열이 포함된 확장과 일치하도록 list.txt의 내용을 필터링하여 일치하는 확장의 수를 줄이는 것입니다. 예를 들어, 문자열이 wiki찾고 있는 여러 확장명과 일치하는 경우 list.txt의 내용을 필터링하여 일치 wiki시키고 약간의 시간을 절약할 수 있습니다. ~ 안에https://extdist.wmflabs.org/dist/extensions/두 가지를 모두 포함하는 5개의 링크가 있으며 1_252 wiki개의 패턴이 일치하는 5개의 링크를 모두 찾을 수 있습니다.

답변2

아니요, 와일드카드로는 불가능합니다. 하지만 이 상황에서 wget은 재귀 다운로드와 함께 작동합니다.https://unix.stackexchange.com/questions/25340/download-recursively-with-wget

관련 정보