LINUX.ORG.RU

перемещение html файлов с сохранением линков


0

0

Привет.

Чем бы сделать этакое: есть некий сайт (ну на самом деле это хелп, но не суть). Сайт выглядит как куча html/png файлов в одном каталоге (этакой плоский сайт). Примерно так:

zajcy_sibirskij1.png
zajcy_sibirskij2.png
zajcy_afrikanskij1.png
zajcy_sibirskij.html
zajcy_sibirskij.html
zajcy_afrikanskij.html
volki_evrejskij1.png
volki_evrejskij.html
volki_kavkazkij.html

И т.д. Внутри этих html находятся ссылки на другие html из этого плоского сайта (в том числе cross ссылки, когда в одном html есть ссылка на другой, а в другом на первый), ну а также вставленные png как img.

Задача взять мышом (или консолью) и сказать так:

cd ploskij_sajt
mkdir ./volki
mv volki_evrejskij.html volki_kavkazkij.html ./volki

Ну то есть перенести волков в отдельную директорию, чтобы все это перестало быть плоским. Но надо чтобы при этом:

1. Линки изменились (остались правильными) (в том числе cross линки), в том числе img
2. Желательно конечно чтобы img потянулись вслед за html автомагически (чтобы их мышом не надо было а они сами) но это уже не так важно.

Чем бы это сделать кроме самопальных скриптов?

только самопальные утилиты )))

phasma ★☆
()

Вот на скорую руку написал скриптик:

#!/bin/sh
#set -x
echo -ne "\033[1;33m Specify new directory\033[0m [example: ./dir]: "
read NEWDIR
NEWDIRLS=`find $NEWDIR/*`
for NF in `echo $NEWDIRLS`
do
        NEWFN=`basename $NF`
        NEWFNLS=`grep $NEWFN ./* | cut -d : -f 1 | uniq`
        for CHANGEFILE in `echo $NEWFNLS`
        do
                echo "------------------------------------------------------------------------"
                echo -n "Link: "; grep -o "<a href=\"`echo $NEWFN`" `echo $CHANGEFILE` || continue 1
                echo -e "Change link in the file: \033[1;33m$CHANGEFILE\033[0m "
                echo -ne "from: \033[1;31m$NEWFN\033[0m   to: \033[1;32m$NEWDIR/$NEWFN\033[0m ? [y/N]: "
                read YN
                if [ $YN = "y" ]
                then
                        sed s@${NEWFN}@${NEWDIR}/${NEWFN}@g ${CHANGEFILE} > ${CHANGEFILE}.tmp
                        mv ${CHANGEFILE}.tmp ${CHANGEFILE}
                else
                        continue 1
                fi
        done
done
echo  "All done!"
exit 0

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

Он совершенно не гибкий, но как пример, сойдёт. Только, скорее всего, его нужно будет подрихтовать под ваши нужды. В общем, он берёт названия файлов из указанного каталога и ищет в файлах текущего каталога ссылки на эти файлы. Если находит ссылку - предлагает заменить её на актуальную и после вашего согласия, заменяет. Работает, только если ссылка вида <a href="filename...

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

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

Меня больше интересовал не скрипт а какая-нибудь тулза для управления "проектом" html файлов, где это работает. Какой-нибудь дримвивер или el для емакса. Но спасибо и за скрипт!

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

> Меня больше интересовал не скрипт а какая-нибудь тулза для управления "проектом" html файлов, где это работает. Какой-нибудь дримвивер или el для емакса. Но спасибо и за скрипт!

Дримвувер вроде HTML редактор а не фреймвок ..

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