У меня есть каталог с большим количеством файлов .7z, мне нужно упаковать каждый из них в zip-архив, как я могу сделать это автоматически в Linux?
2 ответа
Вы также можете просто использовать инструмент 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".
Используйте следующий скрипт и запустите его из каталога, где находятся ваши файлы .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
, в имени которых нет пробелов или других специальных символов.