Perl:如何在解压缩tar.gz文件时获取新目录

时间:2014-01-05 18:58:56

标签: linux perl compression tar

我想创建一个提取文件的perl脚本,然后在那里打开结果和剂量。我有这个代码:

$res = qx{tar -xvf $tmp -C /tmp/}; #$tmp was specified earlier

但我不知道如何查看创建了哪个新目录?

这可能不是最有效的方法,但我是Perl的新手并且不了解所有模块。

2 个答案:

答案 0 :(得分:2)

一种选择是解析tar的输出,它会变得混乱,并且可以在tar版本之间进行更改。

或者您可以在空目录中解压缩。然后解压后目录中的任何内容都是来自tarball的内容。即使tarball是不礼貌的并且不创建目录,这也可以工作。

use File::Temp;

my $tempdir = File::Temp->newdir;
qx{tar -xvf $tarball -C $tempdir};

或者您也可以使用Archive::TarArchive::Extract列出档案中的文件。 Archive :: Extract具有作为各种存档格式的通用接口的好处。

use Archive::Extract;

my $ae = Archive::Extract->new( archive => $tarball );
my $files = $ae->files;

答案 1 :(得分:0)

您可以在解压缩tarball之前构建一个目录列表(使用readdir()),然后重新生成它,并推断出新列表中不在原始列表中的任何内容都来自tarball。