Изменение имен файлов перед их загрузкой wget (без переименования локальных версий)

у меня есть файловая система веб-сайта, в которой каждый файл имеет две копии, сводную копию и большую копию с разными именами. Например, большой файл копии может быть страницы / info / GK2grkG23r_lg.HTML-код в то время как в сводной копии буквы предварительного расширения изменяются как страницы/info / GK2grkG23r_sh.HTML-код. Я пытаюсь запустить wget в файловой системе, но все ссылки по дизайну указывают на маленькую копию, чтобы сэкономить ресурсы, и мне нужны большие копии. Так во время работы wget над страницы может загрузить все сводные копии:

pages/info/GK2grkG23r_sh.html
pages/info/2Yp58xr4Ir_sh.html
pages/info/Lmk2nIj23r_sh.html
pages/info/M23Dka6D4r_sh.html

Я хотел бы изменить имена файлов, которые wget собирается загрузить на:

pages/info/GK2grkG23r_lg.html
pages/info/2Yp58xr4Ir_lg.html
pages/info/Lmk2nIj23r_lg.html
pages/info/M23Dka6D4r_lg.html

хотя файлы, которые найдет wget, будут указывать на первый набор.

чтобы было ясно, я не хочу загружать файлы с первым набором имен выше, а затем переименовывать их. Я хочу запустить wget, который затем попытается загрузить первый список файлов, но немного изменит буквы загружает второй список. Может ли wget сделать это?

9
задан Philip Arnott
18.02.2023 8:50 Количество просмотров материала 2600
Распечатать страницу

2 ответа

вы можете попробовать обходной путь.

В milestons являются:

  1. скачать полный список файлов и сохранять его в файл
  2. изменить последнюю часть имен файлов
  3. загрузить только файлы с измененным именем.

нужен файл filter.awk подобно этому

/^--.*--  http:\/\/.*[^\/]$/ { u=; }
/^Length: [[:digit:]]+/ { print u; }

шаг за шагом:

wget -r -np --spider http://yourhost | awk -f filter.awk  > My_List.txt
sed -i s/_sh.html/_lg.html/g My_List.txt
wget -x -i My_List.txt

благодарности:

Я черпаю вдохновение из ответ.

1
отвечен Hastur 2023-02-19 16:38

сначала получите индексный файл:

wget -O index.html "$URI"

затем перепишите URL-адреса в нем:

sed -i '/_sh\(\.html\)/_lg/g' index.html

(я использовал sed, но вы можете предпочесть, например, подход на основе XSLT. Выбирай сам.)

теперь, скажите wget, чтобы захватить все pages/info/*, используя измененный индексный файл и его Исходное расположение в качестве исходного базового URI:

wget --recursive --level=1 \
    --input-file=index.html --force-html --base="$URI" \
    --accept-regex 'pages/info/.*_lg\.html'

N. B. большинство из этих длинных вариантов имеют короткие альтернативы-см. справочную страницу. Я использовал длинную форму для ясность.

0
отвечен Toby Speight 2023-02-19 18:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх