Как создать каталоги, содержащие index.html с помощью wget -recursive?

Я очень рад, как wget -r работает и загружает вещи.

Я создал локальный сервер, который обслуживает веб-сайт, и страницы выглядят следующим образом:

 http://localhost:8080/ http://localhost:8080/foo http://localhost:8080/bar http://localhost:8080/blog/ http://localhost:8080/blog/1-and-here-the-slug 

Когда я использую wget -r localhost:8080 он создает следующую структуру:

 . ├── static-files │  └── ... ├── bar ├── blog │  └── 1-and-here-the-slug ├── foo └── index.html 

bar , foo и 1-and-here-the-slug – это файлы. Я хочу, чтобы они были каталогами с одним файлом в них с именем index.html и все еще не нарушали пути к ресурсам (CSS, JS и т. Д.).

Я ожидаю чего-то вроде этого:

 . ├── static-files │  └── ... ├── bar │  └── index.html ├── foo │  └── index.html ├── blog │  ├── index.html // <---------- Also I want this one here to show the blog │  └── 1-and-here-the-slug │  └── index.html └── index.html 

Как я могу это сделать?

  • make wget ссылается на локальную копию без избыточной загрузки файлов
  • скачать pdf-файлы с помощью curl
  • Загрузите файлы в формате pdf и zip с помощью wget с веб-сайта php
  • Найти рекурсивный поиск Grep
  • Использование wget и grep для загрузки HTML-страниц и фильтрации по ключевым словам
  • Как быстро загрузить тысячи файлов?
  • Есть ли хорошие инструменты, помимо SeleniumRC, которые могут загружать веб-страницы, включая контент, расписанный JavaScript?
  • Идентификация открытых и закрытых IP-адресов / портов сервера
  • One Solution collect form web for “Как создать каталоги, содержащие index.html с помощью wget -recursive?”

    http://localhost:8080/blog/1-and-here-the-slug

    bar, foo и 1-and-here-the-slug – это файлы. Я хочу, чтобы они были каталогами с одним файлом в них с именем index.html и все еще не нарушали пути к ресурсам (CSS, JS и т. Д.).

     ├── blog │ └── 1-and-here-the-slug │ └── index.html 

    Когда вы http://localhost:8080/blog/1-and-here-the-slug к http://localhost:8080/blog/1-and-here-the-slug текущий каталог – это blog , если вы переименовали эту страницу в blog/1-and-here-the-slug/index.html , ваш новый текущий каталог будет blog/1-and-here-the-slug . Таким образом, вы нарушите относительные пути внутри ресурса (CSS, JS), если таковые имеются. И нет способа решить этот вопрос без изменения внутреннего HTML-файла .

    Лучшее, что вы можете сделать, это переименовать файлы без расширения, чтобы иметь расширение html.

     ├── blog │ └── 1-and-here-the-slug.html 
    1. Сохраняя один и тот же каталог, вы можете использовать команду rename рекурсивно:

    Пример:

      find tmp -type f ! -name '*.*' | rename -nv 's/(.*)/$1.html/' 
    1. Вы можете создавать новые каталоги, но это нарушит относительные ресурсы, если таковые имеются

    Пример:

      find tmp -type f ! -name '*.*' | while read file; do mv $file $file.tmp; mkdir $file; mv $file.tmp $file/index.html; done 

    Вы можете играть, вставив <base href=""> в файл, чтобы указать хороший путь к ресурсам thr, но это будет очень тяжелая дорогостоящая работа

    1. ** Или лучше, используйте параметр -E wget

    EDIT: чтение страницы wget man дает вам два замечательных варианта

      -E --adjust-extension If a file of type application/xhtml+xml or text/html is downloaded and the URL does not end with the regexp \.[Hh][Tt][Mm][Ll]?, this option will cause the suffix .html to be appended to the local filename. -k --convert-links After the download is complete, convert the links in the document to make them suitable for local viewing. This affects not only the visible hyperlinks, but any part of the document that links to external content, such as embedded images, links to style sheets, hyperlinks to non- HTML content, etc. 
    Linux и Unix - лучшая ОС в мире.