Перепакуйте 7z файлы в zip файлы в linux

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

2 ответа

Решение

Используйте следующий скрипт и запустите его из каталога, где .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 файлы без пробелов или других специальных символов в имени.

Вы также можете просто использовать 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".
Другие вопросы по тегам