Вообщем, сижу я тут эксперименты со своей документацией провожу -
такие конструкции рисую, что аж дух захватывает. Может конечно и можно
проще, но пока у меня вот так получается.
Итак, у меня есть не отсортированная документация - странички
закаченные Opera, лежащие в отдельных папках, в виде:
$ cd /mnt/hdc7/1/Linux/new/new
$ find . -name "*" -print
маленький кусочек ./other
./other/Linux для IBM S 390
./other/Linux для IBM S 390/ibm_s390.htm
./other/Linux для IBM S 390/logolfto.gif
./other/Linux для IBM S 390/transpix.gif
./other/Linux для IBM S 390/CuneytGo.jpg
./other/Linux для IBM S 390/ibm39000.gif
/other/Linux для IBM S 390/image012.jpg
./other/Linux для IBM S 390/image014.jpg
./other/Linux для IBM S 390/image016.jpg
./other/Linux User Group HOWTO
./other/Linux User Group HOWTO/lug-howto.html
./other/Linux User Group HOWTO/rus-lg00.css
./multimedia
./multimedia/bootsplash
./multimedia/bootsplash/bootsplash.html
./multimedia/Сравнение видеоподсистем UNIX и Windows
./multimedia/Сравнение видеоподсистем UNIX и Windows/compare_videosystem.htm
./multimedia/Сравнение видеоподсистем UNIX и Windows/w51s0000.png
./multimedia/Сравнение видеоподсистем UNIX и Windows/l51s0000.png
./multimedia/Настройка framebuffer под Линукс
./multimedia/Настройка framebuffer под Линукс/framebuffer_on_linux.html
./multimedia/Настройка framebuffer под Линукс/back0000.gif
маленький кусочек Допустим, я хочу проводить некоторые эксперименты со страничками, но
не хочу портить оригиналы. Т.е. их мне нужно куда-нибуть скопировать,
пусть в /home/koal/work/docs. Что я хочу сделать? Например,
производить эксперименты только со страничками скаченными с какого-то
одного сайта. Можно сидеть и долго руками их выбирать из всей базы, но
можно и заставить компьютер это делать. Воспользуемся тем, что Opera в
конце каждой html странички оставляет комментарий - откуда данная
страничка была скопирована. Итак:
begin ~/bin/info_doc.pl #!/usr/bin/perl
$space = " ";
@x = grep(chomp,`find . -name \"\*htm\*\" -print | grep -v \"\.\/sites\" | grep
-v \"\.\/chtivo\"`);
foreach (@x) {
$r = $_;
if ( ! -d $r) {
@y = `tail -n 1 \"$r\"`;
if (grep(/^\<\!--\sTh/, @y)) {
$s = pop @y;
$s =~ s/^(.+http:\/\/)([a-zA-Z0-9\.\-\_\:\xC5]+)\/(.*\n*)/\2/;
print $s.substr($space,0,25-length($s)).$r."\n";
}
}
}
end ~/bin/info_doc.pl В каталогах "sites" целиком скаченные сайты, а в "chtivo" не очень
нужная информация - ее не будем копировать. Также пришлось указать,
что в названии сайта, помимо букв и цифр, также оказаться символ "е"
(xC5), например, "ramblеr" ;)
Этот скрипт выводит в две колонки сайт, с которого скачена страничка и
относительную ссылку на саму страничку в документации.
Теперь я хочу скопировать только нужные странички (с сайтов knoppix.ru
и linux.su - это один и тот же ресурс):
$ (info_docs.pl | grep knoppix.ru | awk '{ print substr($0,26) }'; \
info_docs.pl | grep linux.su | awk '{ print substr($0,26) }') | \
sed 's/\(.*\)\/\(.*\)$/\"\1\"/' | \
xargs cp -R --target-directory=/home/koal/work/docs
Все теперь они лежать в нужном месте. Разбирайтесь сами, что эта
строка делает. А я побежал домой.