如何在linux中使用perl提取7z zip文件

问题描述 投票:1回答:1

我在以下位置/ aaa / bbb / ccc中有一个example.7z zip文件。我需要在同一位置提取该zip文件。我尝试了很多方法,但无法获得正确的输出。请帮帮我。提前致谢!

use strict ;
use warnings ;
use IO::Uncompress::Unzip qw(unzip $UnzipError) ;
use IO::File ;
my $input = '/aaa/bbb/ccc/example.7z';
my $zip = (split(/\//, $input))[-1]; #to extract the example.7z
my $buffer = '/aaa/bbb/ccc/';
unzip $zip => \$buffer
       or die "unzip failed: $UnzipError\n"

我尝试过这种方法。这个例子.7z zip文件包含三个.BIN文件。我需要提取它们。目前我在该位置得到任何输出。

perl 7zip
1个回答
0
投票

我建议你使用Archive::SevenZip模块。

我通过阅读文档和做一些实验来想出这段代码。

use strict;
use warnings 'all';

use Archive::SevenZip;

my $ar = Archive::SevenZip->new(
    archivename => "YourArchive.7z",
    find        => 1,
);

for my $entry ( $ar->list ) {

    next unless $entry->{Attributes} =~ /^A/;

    my $target = join "/", "YourExtractedFolderName", $entry->basename;
    $ar->extractMember( $entry->fileName, $target );
}

所有文件都被提取到文件夹的根目录,因为我测试$entry是否是一个文件($entry->{'Attributes'}是文件的A和目录的D)。知道这一点,您可以通过修改我的代码来提取文件夹。

您还应检查存档是否存在,否则将返回错误。

© www.soinside.com 2019 - 2024. All rights reserved.