Цитата:
Сообщение от shuron
Было бы супер!!!
|
Пожалуйста.
Извини что так долго, совсем не до этого было...
Комментарии с настройками в коде. Думаю что там все понятно. Тестировалось небрежно, на 5 файлах, но работало нормально.
Для работы требуется zip, unzip, awk.
Еслим что будет не понятно - с радостью отвечу.
Код:
#!/bin/bash
#CaseSensitive!
EXT=jar
#Расширение, с которым оставлять оригинал. Если оставить пустое, то файлы будут перезаписываться.
BAK_EXT=bak
TMP_DIR=wirking_dir.tmp
FULL_LOG=LOG.LOG
#Uncomment this line, if log not needed
#FULL_LOG=/dev/null
echo Starting at `date` > $FULL_LOG
if [ ! "$1" ]; then
echo 'Необходимо передать директорию для обработки первым параметром!'
exit 1
fi
DIR=$1
if [ ! -d $TMP_DIR ]; then
mkdir $TMP_DIR
fi
for File in $DIR/*.$EXT
do
echo ======================================
echo Обрабатывается $File | tee -a $FULL_LOG
( unzip -x $File -d $TMP_DIR 2>&1) >>$FULL_LOG
#"Для чисчтоты ещё не плохо бы в каждом jare стереть всё содержимое каталога META-INF кроме MANIFEST.FM."
#Do it
ls -1 $TMP_DIR/META-INF | grep -v 'MANIFEST.MF' | xargs -r rm >> $FULL_LOG 2>>$FULL_LOG
#"Так вот чтобы убрать сигнатуру такого jar-фала то по идее достаточно стереть нижнию часть содержимого файла manifest.fm оставив верхнюю (начиная с кажем с первой пропущеной строки и до кноца)."
#Do it
awk 'BEGIN {RS="\r?\n\r?\n.+"} { print $0}' $TMP_DIR/META-INF/MANIFEST.MF > $TMP_DIR/META-INF/MANIFEST.MF.tmp
mv $TMP_DIR/META-INF/MANIFEST.MF.tmp $TMP_DIR/META-INF/MANIFEST.MF
#Пакуем обратно
if [ "$BAK_EXT" ]; then
mv $File $File.$BAK_EXT
else
rm $File
fi
CUR_PWD=`pwd`
cd $TMP_DIR
( zip -9r `basename $File` ./* 2>&1 ) >>$FULL_LOG
# >> $FULL_LOG 2>>$FULL_LOG
cd $CUR_PWD
mv $TMP_DIR/`basename $File` $File
echo -e "\tDONE" | tee -a $FULL_LOG
rm -rf $TMP_DIR/*
done
rmdir $TMP_DIR
P.S. Очень все-таки надеюсь что правда относительно честных намерений, а не чьи-то копирайты у ворованного контента снимаете.