Перепакуйте 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".