Загрузите файлы и создайте ту же структуру файлов, что и исходный код

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 /

Я обнаружил, что могу загрузить все URL-адреса в файле, используя 'wget -i', но как я могу создать соответствующую структуру каталогов с этим

NGambit
источник

Ответы:

27

От man wget:

-x, --force-каталоги:

[...]

создать иерархию каталогов, даже если бы не было создано иначе. Например, wget -x http://fly.srk.fer.hr/robots.txt сохранит загруженный файл в файл fly.srk.fer.hr/robots.txt.

Крис Даун
источник
Спасибо за рекомендацию человека. Я должен привыкнуть помогать себе.
NGambit
Крис: Но похоже, что если у меня есть 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.txtв Unix.
Крис Даун
Вы правы. Конфигурационный файл, который я использовал, имел «\» вместо «/» (так как он был проанализирован из другого файла на основе Windows) в путях каталогов, что мешало. Просто заменил '\' на '/', а "wget ​​-x -i filename" работает как шарм
NGambit
2
Примечание: иногда вы хотите пропустить первые N папок в URL, затем добавляете:--cut-dirs=N
tokland
16

Чтобы получить структуру, которую вы запрашиваете, я бы предложил использовать -nH, а также -x.

Это удалит имя хоста, а также создаст ожидаемую структуру каталогов.

например

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...
Джо
источник