3

У меня есть каталог с большим количеством файлов .7z, мне нужно упаковать каждый из них в zip-архив, как я могу сделать это автоматически в Linux?

2 ответа2

3

Вы также можете просто использовать инструмент arepack , входящий в набор инструментов atool. Обычно это yum install atool или apt-get install atool . Как только это станет доступно, вы можете просто сделать это:

$ arepack -e -F zip *.7z

Это преобразует все файлы .7z в файлы .zip. Вам все равно нужно удалить файлы * .7z, но это можно сделать просто так:

$ rm -f *.7z

Дополнительные опции арепака

Options:
  -e, --each               execute command above for each file specified
  -F, --format=EXT         override archive format (see below)
  -O, --format-option=OPT  give specific options to the archiver
  -D, --subdir             always create subdirectory when extracting
  -f, --force              allow overwriting of local files
  -q, --quiet              decrease verbosity level by one
  -v, --verbose            increase verbosity level by one
  -V, --verbosity=LEVEL    specify verbosity (0, 1 or 2)
  -p, --page               send output through pager
  -0, --null               filenames from standard in are null-byte separated
  -E, --explain            explain what is being done by atool
  -S, --simulate           simulation mode - no filesystem changes are made
  -o, --option=KEY=VALUE   override a configuration option
      --config=FILE        load configuration defaults from file

Archive format (for --format) may be specified either as a
file extension ("tar.gz") or as "tar+gzip".
3

Используйте следующий скрипт и запустите его из каталога, где находятся ваши файлы .7z :

#!/bin/bash

TMPDIR=tempdir_$$

for x in `ls *.7z`; do
    mkdir $TMPDIR
    cd $TMPDIR
    cp ../$x .
    p7zip -d $x
    zip -r ../${x%.7z}.zip *
    cd ..
    rm -rf $TMPDIR    
done

Это оставит ваши файлы .7z там, где они есть, и создаст файлы .zip с тем же именем.

Сценарий копирует файлы .7z во временный каталог перед их извлечением, поскольку они обычно удаляются после распаковки файлов.

Я сохранил сценарий настолько простым, насколько это возможно, чтобы вы могли легко понять, как он работает.

Сценарий будет работать только с файлами .7z , в имени которых нет пробелов или других специальных символов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .