linux - Perl:如何在解压缩 tar.gz 文件时创建新目录

标签 linux perl compression tar

我想制作一个提取文件的 perl 脚本,然后打开结果并在其中添加内容。我有以下代码:

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

但我不知道如何查看创建的新目录?

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

最佳答案

一个选项是解析 tar 的输出,这会变得困惑并且可以在不同版本的 tar 之间改变。

或者您可以在一个空目录中解压。那么解压后目录中的任何内容都是来自 tarball 的内容。即使 tarball 是不礼貌的并且不创建目录,这仍然有效。

use File::Temp;

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

或者你也可以使用Archive::TarArchive::Extract列出存档中的文件。 Archive::Extract 的好处是可以作为各种存档格式的通用接口(interface)。

use Archive::Extract;

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

关于linux - Perl:如何在解压缩 tar.gz 文件时创建新目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937737/

相关文章:

java - 压缩字符串并将其作为字符串存储在数据库中以供以后解压

linux - 文件在 Linux 上消失了。搜索显示它仍然存在

linux - 如何在没有扩展名的情况下运行linux命令

在 C 程序中捕获 Ctrl+C

perl - 在 Perl 中执行进程,使用 IPC 停止、恢复、终止选项

perl - 如何在 SOAP::Lite 中处理命名空间生成?

linux - 获取由 stdin write 打印的 bash 自动补全

MySQL 随机查询生成器输出含义

windows - 压缩的文件路径数组和随机访问

compression - 为什么 Base64 编码的数据压缩效果这么差?