LINUX.ORG.RU

offline просмотр сайта.


0

0

Доброго времени суток.

Есть такая проблемка. Скачал сайт командой wget -r -l0 -np -k http://..., сайт успешно скачался, в папке лежат фалы вида index.html, index.html_cat=2, index.html?p=43 ... я запускаю index.html в konqueror, страница успешно открывается, url в браузере написан file:///home/user/index.html. Когда я перехожу по любой ссылке адрес в строке меняется на др. вида file:///home/user/index.html_cat=2, но отображаемая страница при этом остается та же. Но если это же файл открыть руками, то есть через файл-открыть файл, то откроется именно та страница которая сохранена в файле.

Подскажи пожалуйста как мне нормально просмотреть этот сайт с диска.

Заранее спасибо.


Попробовал в оффтопике, на компе сестры, в firefox, в opera и в ie. Ситуация та же.

Очень нужна помощь.

zdf
() автор топика

У тебя на сайте на самом деле не бало никакой html-странички. При загрузке просто знак & заменлся на _ а "типа html-страница" - это скрипт, который обрабатывал параметра вида cat=2.

Соответственно, я не вижу иного пути кроме переименования всех файлов в цивильный вид и проезда по ним sed'ом.

name_no ★★
()
Ответ на: комментарий от zdf

Ну, я бы сделал как-то так:

find ./ -type f | while read FILE; do
    NEW_FILE=$(echo ${FILE/html/} | tr [&?=] [___]).html
    mv "$FILE" "$NEW_FILE"
    sed -i -e "s/$FILE/$NEW_FILE/" ./*
done

Коряво, конечно, но вот как-то так

name_no ★★
()
Ответ на: комментарий от name_no

tr: пропущен операнд после `['
При преобразовании необходимо задать две таблицы.
Попробуйте `tr --help' для получения более подробного описания.
./1.sh: line 3: ?=]: command not found
mv: `./.html' и `.html' - один и тот же файл
sed: -e выражение #1, символ 11: неизвестный модификатор к `s'

zdf
() автор топика
Ответ на: комментарий от zdf

я экранировал скобки и но после этого вот:
sed: -e выражение #1, символ 55: неизвестный модификатор к `s'
sed: -e выражение #1, символ 34: неизвестный модификатор к `s'
sed: -e выражение #1, символ 66: неизвестный модификатор к `s'
sed: -e выражение #1, символ 65: неизвестный модификатор к `s'
sed: -e выражение #1, символ 66: неизвестный модификатор к `s'
sed: -e выражение #1, символ 22: неизвестный модификатор к `s'
sed: -e выражение #1, символ 66: неизвестный модификатор к `s'
sed: -e выражение #1, символ 22: неизвестный модификатор к `s'

zdf
() автор топика
Ответ на: комментарий от zdf

sed -i -e "s/$FILE/$NEW_FILE/" ./*

заменил двойные кавычки на одинарные и скрипт стал работать без ошибок.

Правда он не делает свою работу, работает секунд 40, ни чего не пишет, а после его работы файлы переименованы, а в нутри файлов все по прежнему.

zdf
() автор топика
Ответ на: комментарий от zdf

Да, запамятовал, в названиях файлов нужно / заменять на \/, а то sed ругается )))

find ./ -type f | while read FILE; do
    NEW_FILE=$(echo ${FILE/html/} | tr &?= ___ ).html
    mv "$FILE" "$NEW_FILE"
    NEW_FILE=$(echo "$NEW_FILE" | sed -e 's/\//\\\//g')
    sed -i -e "s/$FILE/$NEW_FILE/" ./*
done

И ещё, никогда не копируйте в командную строку то, о чем ничего не знаете, как оно работает. Вспомните знаменитый однострочник на perl, я ведь Вам его мог подсунуть.

Эта команда что делает:
find - находит в текущей директории все файлы и передаёт по конвейеру в цикл.
while - это цикл
read - читает строку в переменную FILE
потом из этой переменной мы делаем переменную NEW_FILE
tr заменяет набор сивмволов на другой набор символов. 
потом mv переименовывает файл
sed выполняет замену / на \/ по регулярному выражению.
sed редактирует все файлы, какие есть в текущей директории, по регулярному выражению.

name_no ★★
()
Ответ на: комментарий от zdf

> Правда он не делает свою работу, работает секунд 40, ни чего не пишет, а после его работы файлы переименованы, а в нутри файлов все по прежнему.

Ох-ох-ох, а как же теперь файлы обратно переименовать? Скрипт-то седом менял внутри файлов старое название на новое... Ну, короче, почитайте про регулярные выражения, предложенный вариант всё равно накосячил бы ))))))

name_no ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.