Shell 如何解压缩一个";。zip";使用Perl将输出归档并重定向到指定文件?

Shell 如何解压缩一个";。zip";使用Perl将输出归档并重定向到指定文件?,shell,perl,Shell,Perl,假设我有一个名为myPartial.zip的zip文件,我想解压缩这个myPartial.zip归档文件,并将输出重定向到名为output.txt的文件 为了实现这一点,我可以使用以下shell脚本: unzip -Z1 myPartial.zip | grep -v "/$" >> my.log 我的问题是如何在Perl中执行相同的操作?在Perl中有许多解压选项 第一种方法是在Perl中运行shell命令 system 'unzip -Z1 myPartial.zip | gr

假设我有一个名为
myPartial.zip
的zip文件,我想解压缩这个
myPartial.zip
归档文件,并将输出重定向到名为
output.txt
的文件

为了实现这一点,我可以使用以下shell脚本:

unzip -Z1 myPartial.zip | grep -v "/$" >> my.log

我的问题是如何在Perl中执行相同的操作?

在Perl中有许多解压选项

第一种方法是在Perl中运行shell命令

system 'unzip -Z1 myPartial.zip | grep -v "/$" >> my.log';
接下来是使用一个zip模块。有几个,包括和


您是否需要开始使用其中一个模块取决于您所做工作的要求。

您可以尝试直接使用以下方法运行shell命令:

如果要在执行完成后终止脚本,请使用以下方法:

如果希望直接在PERL中处理程序的输出,只需使用backticks来执行命令并获取其输出:

$response = `unzip -Z1 myPartial.zip | grep -v "/$" >> my.log`;
然后可以使用预览输出,如下所示:

print $response;

祝你好运。

好的,
解压-Z1 foo.zip
显示为列出zip存档中文件的文件名,而不是解压缩文件。这对于希望所有内容都在一个文件中更有意义。你只需要文件,而不是目录

因此,perl一行程序:

perl -MArchive::Zip -E '$, = "\n"; say grep { m![^/]$! } Archive::Zip->new($ARGV[0])->memberNames' foo.zip >> my.log

但实际上,像您现在这样使用
unzip
/
zipinfo
就更容易了。

看看。您想将zip存档中的所有文件附加到一个文件中吗?输出中是否应该有任何东西来指示一个文件的结束位置和另一个文件的开始位置?
print $response;
perl -MArchive::Zip -E '$, = "\n"; say grep { m![^/]$! } Archive::Zip->new($ARGV[0])->memberNames' foo.zip >> my.log