파일을 다운로드하고 소스와 동일한 파일 구조를 만듭니다


21

다운로드하려는 URI 목록으로 구성된 구성 파일이 있습니다. 예를 들어

  http://xyz.abc.com/Dir1/Dir3/sds.exe
  http://xyz.abc.com/Dir2/Dir4/jhjs.exe
  http://xyz.abc.com/Dir1/itr.exe

구성 파일을 읽고 각 URL을 복사하고 싶지만 동시에 호스트와 동일한 디렉토리 구조를 만듭니다. 예를 들어, 구성 파일의 첫 번째 줄에 대해 로컬 컴퓨터에 디렉토리 구조 Dir1 / Dir3 (없는 경우)을 만든 다음 sds.exe를 ... / Dir1 / Dir3 /에 복사하려고합니다.

'wget -i'를 사용하여 파일의 모든 URL을 다운로드 할 수 있지만 해당 디렉토리 구조를 어떻게 만들 수 있습니까?

답변:


27

보낸 사람 man wget:

-x, --force- 디렉토리 :

[...]

디렉토리가 생성되지 않았더라도 디렉토리 계층을 생성합니다. 예를 들어 wget -x http://fly.srk.fer.hr/robots.txt 는 다운로드 한 파일을 fly.srk.fer.hr/robots.txt에 저장합니다.


남자 추천 주셔서 감사합니다. 나는 나 자신을 돕는 데 익숙해 져야한다.
NGambit 2016

Chris :하지만 fly.srk.fer.hr/dir1/robots.txt를 가지고 있다면 wget -x는 fly.srk.fer.hr 디렉토리를 생성하고 dir1 / robots.txt라는 파일을 넣습니다. 내가 필요한 것은 하위 디렉토리조차 만듭니다. 즉, robots.txt를 fly.srk.fer.hr/dir1/에 저장하십시오
NGambit

@NGambit dir1/robots.txtUnix에서 이름이 지정된 단일 파일을 만드는 것은 불가능합니다 .
Chris Down

네 말이 맞아 내가 사용하고있는 구성 파일에는 디렉토리 경로에 '/'대신 '\'가 있었지만 (다른 Windows 기반 파일에서 구문 분석했기 때문에) 엉망이되었습니다. '\'를 '/'로
바꾸면

2
참고 : 때로는 URL의 첫 번째 N 폴더를 건너 뛰고 다음을 추가합니다.--cut-dirs=N
tokland

16

원하는 구조를 얻으려면 -n뿐만 아니라 -nH를 사용하는 것이 좋습니다.

이렇게하면 호스트 이름이 제거되고 예상 디렉토리 구조가 생성됩니다.

예 :

wget -x -nH http://xyz.abc.com/Dir1/Dir3/sds.exe

- 'Dir1/Dir3/sds.exe' saved [1234]

매뉴얼 페이지에서 :

-nH
--no-host-directories
   Disable generation of host-prefixed directories.  By default, invoking Wget with -r http://fly.srk.fer.hr/ will create a structure of directories beginning with fly.srk.fer.hr/.  This option disables such behavior.

-x
--force-directories
   ...create a hierarchy of directories, even if one would not have been created otherwise...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.