Сценарий извлечения архива

Я новичок в работе с оболочкой и могу использовать команду unrar для извлечения одного архива, но я хочу сделать гораздо больше, чем это. Позволь мне объяснить.

Пример:

/ParentFolder/ChildFolder1/xyz.rar

/ParentFolder/ChildFolder2/abc.rar

/ParentFolder/ChildFolder3/rty.rar

/ParentFolder/ChildFolder4/wqe.rar

Каждая дочерняя папка имеет разные имена, каждое из которых содержит архивы с разными именами. Я хотел бы создать скрипт, который будет извлекать архивы внутри каждой дочерней папки, а также переименовывать извлеченный файл с тем же именем, что и папка.

БОНУС: У каждой дочерней папки есть архивы, которые перечислены как

archivename.r01

archivename.r02

archivename.rar

Если возможно удалить всю структуру архива после извлечения, это было бы УДИВИТЕЛЬНО.

Надеюсь, я объяснил это достаточно хорошо. Заранее спасибо!

1 ответ

find /ParentFolder -name "*.rar" -exec unrar '{}' \;

Найти все архивные файлы в структуре каталогов и unrar.

find /ParentFolder ! -name "*.rar" | awk -F \/ '{ split($4,fle,".");system("mv "$0" "$2"/"$3"/"$3"."fle[2]) }'

Предполагая, что в структуре каталогов уже нет других файлов, неархивированные файлы не будут файлами с расширением rar, поэтому ищите все эти файлы без rar как расширение и передайте результаты через awk, используя системную функцию для переименования файла. с мв.

find /ParentFolder -name "*.rar" -exec rm -f '{}' \;

Наконец, выполните команду find для всех файлов rar и выполните команду rm -f, чтобы удалить их.

Другие вопросы по тегам