
Я прочитал руководство Wget, но, к сожалению, оно не решает мою проблему, поэтому я был бы очень признателен, если бы кто-нибудь мог мне немного помочь.
У нас есть веб-сайт, (скажем) website.com, который напрямую ссылается на (скажем) website.com/1/, website.com/2/, ... и т. д.
Теперь каждая страница website.com/r/, где r — целое число, ссылается на ряд документов pdf. Вместо того, чтобы они располагались по адресу website.com/r/doc-i.pdf — что было бы удобно — они все располагаются по адресу website.com/files/doc-i.pdf.
Таким образом, когда я выполню команду wget -r -l 2 -A pdf website.com
, я, конечно же, получу большую папку с именем «files» со всеми содержащимися в ней PDF-документами.
Однако я бы предпочел, чтобы они были организованы в разные папки с именами 1, 2, ..., n, которые соответствуют странице, с которой они были загружены. Поскольку я собираюсь загрузить в общей сложности около 10 000 файлов pdf, я бы предпочел не делать этого вручную.
Так как же мне сказать Wget, чтобы он организовал файлы не по структуре каталогов веб-сайта, а по маршруту, по которому был достигнут файл?
Надеюсь, мое объяснение понятно, и добиться этого не слишком сложно.
решение1
(не проверено) Следующее требует некоторой настройки, это просто общая идея:
### get level1
wget -r -l website.com/
#### for each html file otained,
for a in $(find website.com -name '*.html' )
do
### get level 2 but prefix it with the base name
b=$(basename $a)
wget -P $b -r -l 1 -A pdf http://$a
done
- вероятно, находка потребует некоторой настройки
- возможно, добавить что-то вроде того
mv $b/website.com/files FINAL/$b
, чтобы снизить уровни