#!/bin/bash # Если аргумент не передан, используем текущую директорию START_DIR="${1:-.}" # Проверяем, что стартовая директория существует и является директорией if [ ! -d "$START_DIR" ]; then echo "Ошибка: директория '$START_DIR' не существует или не является директорией." exit 1 fi # Используем find, чтобы рекурсивно найти все .zip-файлы find "$START_DIR" -type f -iname '*.zip' | while read -r archive; do # Извлекаем имя архива (без пути) archive_name=$(basename "$archive") archive_dir="${archive%.*}" # Часть после последнего точки (имя без расширения) # Создаём целевую папку mkdir -p "$archive_dir" # Распаковываем в созданную папку unzip -d "$archive_dir" "$archive" # Проверяем код завершения unzip (0 — успех) if [ $? -eq 0 ]; then echo "Успешно распакован: $archive" # Удаляем исходный архив rm -- "$archive" else echo "Ошибка при распаковке: $archive. Файл может быть повреждён." fi done