Пакетное задание распаковки группы файлов архивов 7z
Добавлено: 02 июн 2022, 19:54
Имеется задача распаковки набора файлов 7z пакетным заданием по нажатию кнопки запуска. При этом должна обеспечиваться возможность ручного выбора папки источника и папки назначения. В общем, рабочий скрипт удалось создать. Однако смущает использование команды realpath и последующего считывания полученного значения, а как заставить скрипт понимать пути источника и назначения по-другому - не знаю. Имеется ли возможность "упрощения" кода? К сожалению, сам в программировании на bash "дуб дубом", способным только заимствовать готовые конструкции.
Код под спойлером:

Код под спойлером:
#!/bin/bash
# выбирается папка-источник
dir1=$(zenity --file-selection --directory)
# записывается путь папки-источника
realpath "$dir1" > /tmp/dir1.txt
# считывается путь папки-источника
place1=`cat /tmp/dir1.txt`
dir2=$(zenity --file-selection --directory)
realpath "$dir2" > /tmp/dir2.txt
place2=`cat /tmp/dir2.txt`
# для каждого архива 7z в папке-источника выполнить распаковку в выбранную папку назначения
for package in "$place1/*.7z";
do
7z x "$package" -o"$place2"
done
# найти и удалить файлы 7z в папке источника
find "$place1" -name "*.7z" -delete
exit
# выбирается папка-источник
dir1=$(zenity --file-selection --directory)
# записывается путь папки-источника
realpath "$dir1" > /tmp/dir1.txt
# считывается путь папки-источника
place1=`cat /tmp/dir1.txt`
dir2=$(zenity --file-selection --directory)
realpath "$dir2" > /tmp/dir2.txt
place2=`cat /tmp/dir2.txt`
# для каждого архива 7z в папке-источника выполнить распаковку в выбранную папку назначения
for package in "$place1/*.7z";
do
7z x "$package" -o"$place2"
done
# найти и удалить файлы 7z в папке источника
find "$place1" -name "*.7z" -delete
exit