Пакетная перепаковка архивов в 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
}