Для экономии нашего рабочего времени автоматизируем процесс работы с несколькими архивами.
ВАРИАНТ 2 РАСПАКОВКА ФАЙЛОВ И ПАПОК ИЗ ПАПОК 1 2 3 4 5 6 ИЗ АРХИВОВ ZIP С ПЕРЕУПАКОВКОЙ В АРХИВ TAR.GZ И ПОЛСЕДУЮЩИМ УДАЛЕНИЕМ АРХИВА ПОСЛЕ РАСПАКОВКИСоздайте фаил в программе Kwrite c именем exrtfile.sh и добавьте в его содержание следующий код:
#!/bin/bash
set -euo pipefail
# Папки, в которых ищем архивы
folders=(1 2 3 4 5 6)
for folder in "${folders[@]}"; do
# Проверяем, существует ли папка
if [ ! -d "$folder" ]; then
echo "Папка $folder не найдена, пропускаем."
continue
fi
echo "Обрабатываем папку: $folder"
# --- ЭТАП 1: ZIP → временная папка → tar.gz → удаление ZIP ---
shopt -s nullglob
for zip_file in "$folder"/*.zip; do
if [ ! -f "$zip_file" ]; then
continue
fi
base_name="${zip_file%.zip}"
# Имя tar.gz: папка/имя_без_zip.tar.gz
tar_file="${base_name}.tar.gz"
echo "Обрабатываю ZIP: $zip_file → $tar_file"
# Создаём временную папку
temp_dir="$(mktemp -d)" || { echo "ERROR: не удалось создать временную папку" >&2; continue; }
# Распаковываем ZIP во временную папку
if ! unzip -q -o -d "$temp_dir" "$zip_file"; then
echo "ERROR: не удалось распаковать $zip_file (архив не удалён)" >&2
rm -rf "$temp_dir"
continue
fi
# Упаковываем содержимое временной папки в tar.gz в той же директории, что и исходный ZIP
if tar -czf "$tar_file" -C "$temp_dir" .; then
echo "OK: создан $tar_file"
# Удаляем исходный ZIP
rm "$zip_file"
echo "OK: удалён $zip_file"
else
echo "ERROR: не удалось создать $tar_file (ZIP не удалён)" >&2
rm -rf "$temp_dir"
continue
fi
# Чистим временную папку
rm -rf "$temp_dir"
done
shopt -u nullglob
# --- ЭТАП 2: Распаковка всех tar.gz (включая только что созданные) и удаление архивов ---
shopt -s nullglob
for tar_file in "$folder"/*.tar.gz "$folder"/*.tgz "$folder"/*.tar; do
# Нормализуем имя: если это .tar без gzip, используем tar без -z
if [[ "$tar_file" == *.tar.gz || "$tar_file" == *.tgz ]]; then
extract_opts="-xzf"
else
extract_opts="-xf"
fi
if [ ! -f "$tar_file" ]; then
continue
fi
echo "Распаковываю: $tar_file"
if tar $extract_opts "$tar_file" -C "$folder"; then
echo "OK: распакован $tar_file"
# Удаляем архив после успешной распаковки
rm "$tar_file"
echo "OK: удалён $tar_file"
else
echo "ERROR: не удалось распаковать $tar_file" >&2
fi
done
shopt -u nullglob
done
echo "Готово!"
---------------------------------------------------------------------------------------------------------------------------------------------
Воспользуйтесь терминалом вызовите его сочетанием клавиш Ctrl+Alt+T введите su нажмите Enter введите пароль Администратора и просто перекиньте этот фаил в терминал из окна рабочего стола или проводника смотря где вы его создавали.
Примечание !!!!!!!!
Фаил может не сработать если не стоит в свойствах файла галочка Является выполняемым и не стоят права на просмотр и изменение.
Ниже вы можете скачать мой фаил формата txt* после скачивания вам необходимо переименовать фаил с расширения .txt на .sh