Пакетная перепаковка архивов в 7z: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) |
Rain (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
---- | ---- | ||
<source lang="bash"> | <source lang="bash"> | ||
#!/bin/bash | |||
find "${ | |||
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 | while read file | ||
do | 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 | else | ||
echo "Unknown archive type" | |||
fi | fi | ||
else | |||
echo "Error: File exist" | |||
fi | |||
done | done | ||
} | } |
Версия 12:55, 2 июня 2009
Функция делает поиск 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
}