我有一个包含大量 .7z 文件的目录,我需要将每个文件重新打包为 zip 存档,如何在 Linux 上自动执行此操作?
答案1
使用以下脚本并从文件所在的目录运行它.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
名称中没有空格或其他特殊字符的文件。
答案2
您也可以简单地arepack
使用一个工具工具套件。通常是yum install atool
或。如果尚未安装和包apt install atool
,您可能还需要安装它们。一旦这些可用,您只需执行以下操作:p7zip-full
p7zip-rar
$ arepack -e -F zip *.7z
这会将所有 .7z 文件转换为 .zip 文件。您仍然需要删除 *.7z 文件,但只需按如下方式即可:
$ rm -f *.7z
附加 arepack 选项
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".