在 Linux 中将 7z 文件重新打包为 zip 文件

在 Linux 中将 7z 文件重新打包为 zip 文件

我有一个包含大量 .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-fullp7zip-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".

相关内容