Как найти в папке все zip-файлы, распаковать их, а затем 7-zip в корневую папку как 1 большой zip-файл?

У меня проблема. Мне нужно сжать корневую папку, но в ее подпапках много файлов ZIP / BZIP / TAR. Может кто-нибудь показать мне скрипт, который будет искать и разархивировать zip-файл каждой подпапки, а затем 7-zip корневую папку с максимальным сжатием?

3
задан 16 January 2013 в 01:40

3 ответа

Попробуйте написать свое, это весело! : -)

Вот несколько идей и отправных точек:

  • Скопируйте исходные данные, прежде чем проводить какие-либо эксперименты! (Серьезно, в какой-то момент вам понадобится ваша резервная копия)
  • Создайте новый скрипт с именем recompress.sh.
  • Сделайте его исполняемым с помощью chmod +x recompress.sh.
  • Вы можете использовать find, чтобы получить список всех файлов, которые необходимо обработать. Это работает рекурсивно. См. этот подробности ответа Stackoverflow.
  • Вы должны обрабатывать zip-файлы отдельно с помощью unzip <fileanme>, а все tar-файлы с помощью tar xvf <filename>. Tar имеет автоопределение для типа архива. Так что сделайте две отдельные find /folder -name ... петли. Или найдите инструмент, который может обрабатывать все типы архивов: -)
  • Удалить все извлеченные архивы (помните, что вы сделали резервную копию?)
  • сжать все это с помощью p7zip. Или, если вы хотите настроить уровень сжатия и другие вещи, используйте 7zr напрямую.

Редактировать: На самом деле это может быть намного проще, если вы начнете с пошагового построения команд и изучения ошибок / выходных данных каждой из них.

0
ответ дан 16 January 2013 в 01:40

Вы можете написать скрипт или сделать это простым способом, используя поиск Наутилуса.

  • Просто найдите .zip → выделите все zip-файлы и выберите → «Извлечь здесь»
  • (необязательно), удалите все * .zip-файлы
  • , повторите шаг для другие форматы файлов

Когда закончите, сожмите корневую папку.
быстро & amp; dirty :))

PS: мне нравится терминал, но иногда графический интерфейс пользователя работает быстрее.
PPS: используйте tar.xz для сжатия корневой папки.

0
ответ дан 16 January 2013 в 01:40

Это должно быть отмечено это 7z не уважает полномочия правильно, в которых это не хранит владельца/группу файла и т.д. Это идеально не подходит для резервных копий на Unix, таким образом, я использовал tar.7z в сценарии ниже, который все еще даст хорошее сжатие. Если Вы действительно хотите Вам, мог бы просто указать .7z, но Вы потеряете данные полномочий.

Необходимо будет установить atool из репозиториев, потому что я использую его для упрощения извлечения различных форматов. Вам также будет нужно p7zip:

sudo apt-get install atool p7zip

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

(Командная строка находки в этом сценарии используется от этого вопроса здесь.)

#!/bin/bash

find -mindepth 2 -type f -print -exec mv {} . \;
mkdir my_files
aunpack -e * -X my_files/
apack -O-mx=9 imp_files.tar.7z my_files/
mv imp_files.tar.7z /home/$USER/
exit 0

Важные примечания:

  • Файлы от желаемых подпапок поставляются каталогу, в котором выполняется сценарий, если Вы не хотите добавить строку cd /home/$USER/"$1" к верхней части сценария и места это в Вашем ~/bin и затем назовите его с script_name desired_folder.

  • Файлы найдены и затем перемещены в pwd (существующий рабочий каталог), и затем новый каталог создается, и они все извлечены к этому. Я использовал aunpack и apack от atools пакета, поскольку они позволяют нескольким типам архивирования быть обработанными сразу. См. мой ответ здесь для получения дополнительной информации; aunpack является большим, поскольку это позволяет Вам извлекать все типы архивных файлов, не будучи должен выполниться отдельно tar, 7z, и т.д.

  • После того, как файлы были извлечены к указанной папке, та папка упаковывается как tar затем 7zip файл с максимальным сжатием (mx=9). Наконец, тот получающийся файл перемещен в основу Вашей домашней папки.

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

3
ответ дан 16 January 2013 в 01:40

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

Похожие вопросы: