Пакетная перепаковка архивов в 7z
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Функция делает поиск bz2, gz, tar.bz2 и tar.gz архивов в указанном каталоге и перепаковывает их в 7z. Можно, например, периодически натравливать ее на каталог с выкачиваемыми патчами для Linux-ядра.
#!/bin/bash
if [ -z "${1}" ]; then
echo "Error: Missing Path"
exit 1
fi
recompress() {
echo "Working on ${file}"
"${decompressor}" -c "${file}" |
7z a -si "${file%.*}.7z" 1>/dev/null && rm -f "${file}"
}
find "${@}" -regextype posix-egrep -regex ".*\.(bz2|gz|tgz|tbz|tbz2)$" |
while read file
do
filetype="$(file -b "${file}" | cut -d' ' -f1)"
if [ ! -e "${file%.*}.7z" ]; then
if [ "${filetype}" == 'bzip2' ];then
decompressor='bunzip2'
recompress
elif [ "${filetype}" == 'gzip' ];then
decompressor='gunzip'
recompress
else
echo "Unknown archive type"
fi
else
echo "Error: File exist"
fi
done
}