Код: Выделить всё
#!/bin/bash
TMPNAME=`tempfile -p bzhtm`
if [ $# -eq 0 ]; then
MASK='*.[hH][tT][mM]*'
else
MASK=$@
fi
for i in $MASK; do
echo `basename "$i"` >> $TMPNAME
for j in *; do
if [ -f "$j" ]; then
grep -q "$j" "$i" && echo "$j" >>$TMPNAME
fi
done
done
if [ $# -eq 1 ]; then
grep -vq "$1" $TMPNAME && tar chjT $TMPNAME --remove-files >"$1".tar.bz2
else
DIRNAME=`pwd`
sort $TMPNAME |uniq |tar chjT - --remove-files >`basename $DIRNAME`.tar.bz2
fibasename в начале цикла нужно для того случая, когда скрипт вызывается из контекстного меню какого-нибудь крузейдера (на нём проверял) -- оттуда имя попадает с полным путём.
Скрипт, конечно, не лишён недостатков, основной из которых -- неумение в "общем" режиме пропускать файлы вида *.htm.*, которые он сам и генерит в "частном" режиме. Также отсутствует какая-либо защита от дурака. Я его переделывать больше не буду -- мне и так хватает. Если кто чего добавит/поправит или скажет мне, как можно написать покороче (я над этим особо не задумывался), -- буду очень благода. А так -- берите, пользуйтесь, кому надо, под GPL
P.S. Кста, если поменять в команде затаривания j на z (при этом рекомендуется установить $GZIP в "-9" для улучшения сжатия), а расширение поменять с tar.bz2 на не-помню-какое, должен получиться (не проверял) конкверорский файл "локально сохранённой страницы", который оным конкверором можно и открывать не распаковывая. На сей предмет меня просветил когда-то snake, за что ему отдельное человеческое спасибо.
P.P.S. И ещё кста, может, давайте такие штуки, которые могут ещё кому пригодиться, выкладывать на всеобщий суд? В этой теме.
P.P.P.S. К тому же это моё 2000-е сообщение