wget을 사용하여 텍스트 파일에서 파일 이름 가져오기

wget을 사용하여 텍스트 파일에서 파일 이름 가져오기

원하는 파일 중 일부를 호스팅하는 웹사이트를 찾았지만 파일이 너무 많아서 개별적으로 다운로드할 수 없었습니다. 파일 이름은 상당히 표준적이고 재현 가능한 형식입니다(예: 1_a, 1_b, 1_c 등).

Linux 명령줄을 사용하여 wget자동으로 다운로드할 수 있는 방법이 있습니까? 한 줄에 1개의 항목이 있는 텍스트 파일에 파일 이름을 쉽게 넣고 명령줄에 거기에서 보도록 지시할 수 있지만 전체 URL이 아니라 변경된 부분만 있으므로 명령은 다음과 같아야 합니다.

wget url.com/files/(bit from file).doc sourcefile.txt

기본적으로 소스 파일의 항목을 대괄호 안의 비트로 바꿀 수 있습니다.

또한 한 단계에서는 큰 덩어리(수백 개)의 파일에 순차적으로 번호가 매겨지므로 해당 비트에 대해 for 루프를 사용할 수 있습니까? 그렇다면 명령줄에서 구문적으로 이 작업을 어떻게 수행합니까?

답변1

for 루프를 사용할 수 있습니다:

for x in a b c d e f g h ; do
    wget http://url.com/$x.doc
done

이것은 bash에서 다음과 같이 단축될 수 있습니다.

for x in {a..h} ; do
    wget ...
done

그러나 for 루프가 없어도 다음 단축어를 사용할 수 있습니다.

wget http://url.com/{a..h}.doc

이름이 연속적이지 않고 파일에서 읽어야 하는 경우 while 루프를 사용하세요.

while read x ; do
    wget http://url.com/$x.doc
done < sourcefile.txt

답변2

상대 URL을 사용하여 파일을 생성한 경우 다음을 수행할 수 있습니다.

wget -i /path/to/file -B http://base_url_here

예를 들어 , ... 와 같이 다양한 항목이 포함될 수 있는 http://www.myfiles.com/*.txt항목을 다운로드하려는 경우 해당 항목이 포함된 파일을 생성하면 됩니다.*aa_1

a.txt
a_1.txt
a_2.txt
...

그리고 다음 명령을 입력하세요:

wget -i /path/to/file -B http://www.myfiles.com

이 스위치는 해당 링크가 파일에서 읽혀짐을 -i나타내고 , 이 스위치는 파일에서 읽은 모든 링크에 지정된 매개변수를 기본 URL로 추가함을 나타냅니다.wget-B

답변3

당신은 그것을 사용할 수 있습니다httrack전체 파일 디렉터리(기본적으로 미러 사이트의 모든 항목)를 다운로드하거나 파일 httrack만 다운로드하는 등 특정 파일 확장자와 함께 필터를 지정할 수 있습니다..pdf

다음에 대해 더 자세히 읽을 수 있습니다.httrack필터링 용량특정 방식으로 이름이 지정된 파일만 다운로드하려는 경우 이 방법을 사용해야 합니다.

다음은 와일드카드 기능의 몇 가지 예입니다.

  • *[file]또는 *[name]- 예를 들어 /가 아닌 파일 이름이나 이름이 있습니까? 그리고;
  • *[path] - 임의의 경로(및 파일 이름), 예를 들어 그렇지 않습니까? 그리고;
  • *[a,z,e,r,t,y] - a, z, e, r, t, y의 문자
  • *[a-z]- 어떤 편지
  • *[0-9,a,z,e,r,t,y]- 0..9와 a,z,e,r,t,y 사이의 모든 문자

$ httrack http://url.com/files/ -* +1_[a-z].doc -O /dir/to/output

스위치는 다음과 같습니다:

  • -*- 다운로드할 콘텐츠 목록에서 모든 콘텐츠를 삭제하세요.
  • +1_[a-z].doc- 1_a.doc, 1_b.doc 등의 파일을 다운로드합니다.
  • -O /dir/to/output-여기에 결과를 쓰세요

관련 정보